|
|
| version 1.4, 2003/11/27 17:24:20 | 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 "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 "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 219 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 239 changescreen(BYTE newmode) | Line 261 changescreen(BYTE newmode) |
| toolwin_create(); | toolwin_create(); |
| } | } |
| if (np2oscfg.keydisp) { | if (np2oscfg.keydisp) { |
| keydisp_create(); | kdispwin_create(); |
| } | } |
| } | } |
| } | } |
| Line 256 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 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 */ |