--- np2/x11/np2.c 2003/11/16 16:43:45 1.1 +++ np2/x11/np2.c 2004/05/25 14:06:10 1.17 @@ -28,40 +28,44 @@ #include "compiler.h" #include "np2.h" +#include "pccore.h" #include "dosio.h" #include "scrndraw.h" -#include "statsave.h" #include "timing.h" #include "toolkit.h" -#include "keydisp.h" +#include "kdispwin.h" #include "toolwin.h" +#include "viewer.h" +#include "debugwin.h" #include "commng.h" +#include "joymng.h" #include "kbdmng.h" #include "mousemng.h" #include "scrnmng.h" #include "soundmng.h" #include "sysmng.h" +#include "taskmng.h" NP2OSCFG np2oscfg = { -#if !defined(CPU386) /* titles */ +#if !defined(CPUCORE_IA32) /* titles */ "Neko Project II", #else "Neko Project II + IA32", #endif - 2, /* paddingx */ - 2, /* paddingy */ + 0, /* paddingx */ + 0, /* paddingy */ 0, /* NOWAIT */ - 2, /* DRAW_SKIP */ + 0, /* DRAW_SKIP */ 0, /* DISPCLK */ KEY_KEY106, /* KEYBOARD */ - 0, /* F12COPY */ + 0, /* F12KEY */ 0, /* MOUSE_SW */ 0, /* JOYPAD1 */ @@ -69,6 +73,11 @@ NP2OSCFG np2oscfg = { { 0, 0, 0, 0 }, /* JOY1BTN */ { 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 */ @@ -78,6 +87,7 @@ NP2OSCFG np2oscfg = { 0, /* toolwin */ 0, /* keydisp */ 0, /* hostdrv_write */ + 0, /* jastsnd */ 0, /* I286SAVE */ SNDDRV_NODRV, /* snddrv */ @@ -89,11 +99,16 @@ NP2OSCFG np2oscfg = { #if defined(USE_GTK) /* toolkit */ "gtk", -#else +#elif defined(USE_QT) "qt", +#elif defined(USE_SDL) + "sdl", +#else + "unknown", #endif MMXFLAG_DISABLE, /* disablemmx */ + FALSE, /* shared_pixmap */ }; BOOL np2running = FALSE; @@ -112,7 +127,19 @@ char bmpfilefolder[MAX_PATH]; char modulefile[MAX_PATH]; char statpath[MAX_PATH]; -char timidity_cfgfile_path[MAX_PATH] = TIMIDITY_CFGFILE_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]; + +BOOL use_shared_pixmap; UINT32 @@ -180,10 +207,10 @@ flagload(const char* ext, const char* ti getstatfilename(path, ext, sizeof(path)); ret = statsave_check(path, buf, sizeof(buf)); - if (ret & (~NP2FLAG_DISKCHG)) { + if (ret & (~STATFLAG_DISKCHG)) { fprintf(stderr, "Couldn't restart\n"); rv = 1; - } else if ((!force) && (ret & NP2FLAG_DISKCHG)) { + } else if ((!force) && (ret & STATFLAG_DISKCHG)) { fprintf(stderr, "Conflict\n"); rv = 1; } @@ -214,7 +241,7 @@ changescreen(BYTE newmode) if (renewal) { if (renewal & SCRNMODE_FULLSCREEN) { toolwin_destroy(); - keydisp_destroy(); + kdispwin_destroy(); } soundmng_stop(); mouse_running(MOUSE_STOP); @@ -234,7 +261,7 @@ changescreen(BYTE newmode) toolwin_create(); } if (np2oscfg.keydisp) { - keydisp_create(); + kdispwin_create(); } } } @@ -251,8 +278,10 @@ framereset(UINT cnt) framecnt = 0; scrnmng_dispclock(); - keydisp_draw((BYTE)cnt); + kdispwin_draw((BYTE)cnt); toolwin_draw((BYTE)cnt); + viewer_allreload(FALSE); + debugwin_process(); if (np2oscfg.DISPCLK & 3) { if (sysmng_workclockrenewal()) { sysmng_updatecaption(3); @@ -268,11 +297,78 @@ processwait(UINT cnt) timing_setcount(0); framereset(cnt); } else { - usleep(1); + taskmng_sleep(1); } } -#if defined(__GNUC__) && (defined(i386) || defined(__i386__)) +int +mainloop(void *p) +{ + + UNUSED(p); + + if (np2oscfg.NOWAIT) { + joy_flash(); + 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) { + joy_flash(); + mousemng_callback(); + pccore_exec(framecnt == 0); + framecnt++; + } else { + processwait(np2oscfg.DRAW_SKIP); + } + } else { + /* auto skip */ + if (waitcnt == 0) { + UINT cnt; + joy_flash(); + 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 @@ -303,4 +399,4 @@ havemmx(void) return rv; } -#endif +#endif /* GCC_CPU_ARCH_IA32 */