| version 1.5, 2003/11/28 16:29:57 | 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 31 | Line 29 | 
 | #include "pccore.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 "kdispwin.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 "joymng.h" | 
| Line 45 | Line 45 | 
 | #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", | 
| Line 58  NP2OSCFG np2oscfg = { | Line 59  NP2OSCFG np2oscfg = { | 
 | 0,                      /* 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 79  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 */ | 
| FALSE,                  /* shared_pixmap */ | 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 115  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]; | 
 |  |  | 
| BOOL use_shared_pixmap; | int verbose = 0; | 
 |  |  | 
 |  |  | 
 | UINT32 | UINT32 | 
| Line 185  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 257  framereset(UINT cnt) | Line 279  framereset(UINT cnt) | 
 | framecnt = 0; | framecnt = 0; | 
 | scrnmng_dispclock(); | scrnmng_dispclock(); | 
 | kdispwin_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 273  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); | 
 | } | } | 
 | } | } | 
 |  |  | 
| Line 284  mainloop(void *p) | Line 309  mainloop(void *p) | 
 | UNUSED(p); | UNUSED(p); | 
 |  |  | 
 | if (np2oscfg.NOWAIT) { | if (np2oscfg.NOWAIT) { | 
| joy_flash(); | joymng_sync(); | 
 | mousemng_callback(); | mousemng_callback(); | 
 | pccore_exec(framecnt == 0); | pccore_exec(framecnt == 0); | 
 | if (np2oscfg.DRAW_SKIP) { | if (np2oscfg.DRAW_SKIP) { | 
| Line 303  mainloop(void *p) | Line 328  mainloop(void *p) | 
 | } else if (np2oscfg.DRAW_SKIP) { | } else if (np2oscfg.DRAW_SKIP) { | 
 | /* frame skip */ | /* frame skip */ | 
 | if (framecnt < np2oscfg.DRAW_SKIP) { | if (framecnt < np2oscfg.DRAW_SKIP) { | 
| joy_flash(); | joymng_sync(); | 
 | mousemng_callback(); | mousemng_callback(); | 
 | pccore_exec(framecnt == 0); | pccore_exec(framecnt == 0); | 
 | framecnt++; | framecnt++; | 
| Line 314  mainloop(void *p) | Line 339  mainloop(void *p) | 
 | /* auto skip */ | /* auto skip */ | 
 | if (waitcnt == 0) { | if (waitcnt == 0) { | 
 | UINT cnt; | UINT cnt; | 
| joy_flash(); | joymng_sync(); | 
 | mousemng_callback(); | mousemng_callback(); | 
 | pccore_exec(framecnt == 0); | pccore_exec(framecnt == 0); | 
 | framecnt++; | framecnt++; | 
| Line 344  mainloop(void *p) | Line 369  mainloop(void *p) | 
 | return TRUE; | return TRUE; | 
 | } | } | 
 |  |  | 
| #if defined(__GNUC__) && (defined(i386) || defined(__i386__)) | #if defined(GCC_CPU_ARCH_IA32) | 
 | int mmxflag; | int mmxflag; | 
 |  |  | 
 | int | int | 
| Line 352  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 372  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 */ |