void fddmtr_seek(REG8 drv, REG8 c, UINT size) { int regmove; SINT32 waitcnt; drv &= 3; regmove = c - fddmtr.head[drv]; fddmtr.head[drv] = c; if (!np2cfg.MOTOR) { if (size) { fddmtr.busy = 1; nevent_set(NEVENT_FDBIOSBUSY, size * pccore.multiple, fdbiosout, NEVENT_ABSOLUTE); } return; } waitcnt = (size * DISK1ROL_MS) / (1024 * 8); if (regmove < 0) { regmove = 0 - regmove; } if (regmove == 1) { if (fddmtr.curevent < 80) { fddmtr_event(); #if defined(SUPPORT_SWSEEKSND) fddmtrsnd_play(1, TRUE); #else soundmng_pcmplay(SOUND_PCMSEEK1, FALSE); #endif fddmtr.curevent = 80; fddmtr.nextevent = GETTICK() + MOVEMOTOR1_MS; } } else if (regmove) { if (fddmtr.curevent < 100) { fddmtr_event(); #if defined(SUPPORT_SWSEEKSND) fddmtrsnd_play(0, TRUE); #else soundmng_pcmplay(SOUND_PCMSEEK, TRUE); #endif fddmtr.curevent = 100; fddmtr.nextevent = GETTICK() + (regmove * MOVE1TCK_MS); } if (regmove >= 32) { waitcnt += DISK1ROL_MS; } } if (waitcnt) { fddmtr.busy = 1; nevent_setbyms(NEVENT_FDBIOSBUSY, waitcnt, fdbiosout, NEVENT_ABSOLUTE); } (void)drv; }
void taskmng_rol(void) { static UINT32 tick = 0; SDL_Event e; if (is_proc) { while (SDL_PollEvent(&e) > 0) { switch (e.type) { case SDL_MOUSEBUTTONUP: switch (e.button.button) { case SDL_BUTTON_LEFT: inputmng_buttonup(LBUTTON_BIT); break; case SDL_BUTTON_RIGHT: inputmng_buttonup(RBUTTON_BIT); break; } break; case SDL_MOUSEBUTTONDOWN: switch (e.button.button) { case SDL_BUTTON_LEFT: inputmng_buttondown(LBUTTON_BIT); break; case SDL_BUTTON_RIGHT: inputmng_buttondown(RBUTTON_BIT); break; } break; case SDL_KEYDOWN: inputmng_keyset(e.key.keysym.sym); break; case SDL_KEYUP: inputmng_keyreset(e.key.keysym.sym); break; case SDL_QUIT: taskmng_exit(); break; } } stream_prepart_task(); if (GETTICK() - tick >= 20) { usleep(1); tick = GETTICK(); } } }
BOOL taskmng_sleep(UINT32 tick) { UINT32 base; base = GETTICK(); while (is_proc && ((GETTICK() - base) < tick)) { taskmng_rol(); usleep(20); } return is_proc; }
BOOL taskmng_sleep(UINT32 tick) { UINT32 base; base = GETTICK(); while((task_avail) && ((GETTICK() - base) < tick)) { taskmng_rol(); #if !defined(TARGET_MONA) Sleep(1); #endif } return(task_avail); }
BOOL taskmng_sleep(UINT32 tick) { UINT32 base; base = GETTICK(); while((is_proc) && ((GETTICK() - base) < tick)) { taskmng_rol(); #ifndef WIN32 usleep(960); #else Sleep(1); #endif } return(is_proc); }
// GV : 画面揺らし処理 (T.Yui) int isfcmd_63(SCR_OPE *op) { UINT16 count; BYTE x, y; SINT32 tick; EFFECT ef; if ((scr_getword(op, &count) != SUCCESS) || (scr_getbyte(op, &x) != SUCCESS) || (scr_getbyte(op, &y) != SUCCESS) || (scr_getval(op, &tick) != SUCCESS)) { return(GAMEEV_WRONGLENG); } if (count) { ef = &gamecore.ef; ZeroMemory(ef, sizeof(gamecore.ef)); ef->param = tick; ef->ex.eq.cnt = count * 2; #ifdef SIZE_QVGA ef->pt.x = x; ef->pt.y = y; #else ef->pt.x = vramdraw_half(x); ef->pt.y = vramdraw_half(y); #endif ef->progress = 0; ef->tick = GETTICK(); ef->src = gamecore.vram[gamecore.dispwin.vramnum]; return(GAMEEV_QUAKE); } return(GAMEEV_SUCCESS); }
static void *mvsndplay(const char *movie, BYTE *ptr, UINT size) { ONMEMSTMARG arg; char path[MAX_PATH]; UINT i; BOOL play; play = FALSE; if (!gamecore.gamecfg.bgm) { goto mvsp_exit; } if ((ptr) && (size)) { arg.ptr = ptr; arg.size = size; soundmix_load(SOUNDTRK_SOUND, onmem_ssopen, &arg); play = TRUE; } if (!play) { for (i=0; i<(sizeof(extnames)/sizeof(char *)); i++) { milstr_ncpy(path, movie, sizeof(path)); cutExtName(path); milstr_ncat(path, extnames[i], sizeof(path)); if (!soundmix_load(SOUNDTRK_SOUND, mp3_ssopen, path)) { play = TRUE; break; } } } if (play) { soundmix_play(SOUNDTRK_SOUND, 0, 0); #ifdef WAIT_SOUND { UINT32 base = GETTICK(); while((GETTICK() - base) < WAIT_SOUND) { if (!taskmng_sleep(1)) { break; } } } #endif } mvsp_exit: return((void *)(long)play); }
void sysmng_workclockreset(void) { workclock.tick = GETTICK(); workclock.clock = CPU_CLOCK; workclock.draws = drawcount; workclock.fps = 0; workclock.khz = 0; }
BOOL sysmng_workclockrenewal(void) { SINT32 tick; tick = GETTICK() - workclock.tick; if (tick < 2000) { return(FALSE); } workclock.tick += tick; workclock.fps = ((drawcount - workclock.draws) * 10000) / tick; workclock.draws = drawcount; workclock.khz = (CPU_CLOCK - workclock.clock) / tick; workclock.clock = CPU_CLOCK; return(TRUE); }
BOOL taskmng_sleep(UINT32 tick) { UINT32 base; UINT32 now; UINT32 msec; struct timeval tv; int ret; base = GETTICK(); while (taskmng_isavail() && (((now = GETTICK()) - base) < tick)) { toolkit_event_process(); now = GETTICK(); msec = (tick - (now - base) / 2); if (msec >= 0x80000000) /* minus? */ break; tv.tv_usec = (msec % 1000) * 1000; tv.tv_sec = msec / 1000; do { ret = select(1, NULL, NULL, NULL, &tv); } while ((ret == -1) && errno == EINTR); } return taskmng_isavail(); }
int isfcmd_62(SCR_OPE *op) { EFFECT ef; BYTE cmd; SINT32 num; RECT_U src; RECT_U dst; POINT_T from; POINT_T to; SINT32 tick; if ((scr_getbyte(op, &cmd) != SUCCESS) || (scr_getval(op, &num) != SUCCESS) || (scr_getrect(op, &src) != SUCCESS) || (scr_getrect(op, &dst) != SUCCESS) || (scr_getpt(op, &from) != SUCCESS) || (scr_getpt(op, &to) != SUCCESS) || (scr_getval(op, &tick) != SUCCESS)) { return(GAMEEV_WRONGLENG); } if ((num >= 0) && (num < GAMECORE_MAXVRAM)) { ef = &gamecore.ef; ZeroMemory(ef, sizeof(gamecore.ef)); ef->src = gamecore.vram[num]; vramdraw_scrn2rect(&src.s, &ef->r); vramdraw_scrn2rect(&dst.s, &ef->r2); ef->pt.x = ef->r2.left; ef->pt.y = ef->r2.top; #ifdef SIZE_QVGA vramdraw_halfpoint(&from); vramdraw_halfpoint(&to); #endif if ((setscrpt(&from, &ef->r, &ef->r2) == SUCCESS) && (setscrpt(&to, &ef->r, &ef->r2) == SUCCESS)) { ef->param = tick & 0xffff; ef->ex.es.start.x = from.x; ef->ex.es.step.x = to.x - from.x; ef->ex.es.last.x = 0 - ef->ex.es.step.x; ef->ex.es.start.y = from.y; ef->ex.es.step.y = to.y - from.y; ef->ex.es.last.y = 0 - ef->ex.es.step.y; ef->tick = GETTICK(); return(GAMEEV_SCROLL); } } return(GAMEEV_SUCCESS); }
int event_wait(void) { TIMEEVT tevt; int tick; tevt = &gamecore.wait; tick = (int)(GETTICK() - tevt->base); tick = tevt->val - tick; if (tick > 0) { tick = min(tick, 20); taskmng_sleep(tick); return(GAMEEV_WAIT); } else { return(GAMEEV_SUCCESS); } }
UINT timing_getcount(void) { UINT32 ticknow; UINT32 span; UINT32 fraction; ticknow = GETTICK(); span = ticknow - timing.tick; if (span) { timing.tick = ticknow; fddmtr_callback(ticknow); if (span >= 1000) { span = 1000; } fraction = timing.fraction + (span * timing.msstep); timing.cnt += fraction >> MSSHIFT; timing.fraction = fraction & ((1 << MSSHIFT) - 1); } return(timing.cnt); }
int main(int argc, char *argv[]) { Rect wRect; EventRecord event; UINT t; GrafPtr saveport; Point pt; dosio_init(); file_setcd(target); InitToolBox(); macossub_init(); initload(); MenuBarInit(); TRACEINIT(); keystat_initialize(); SetRect(&wRect, np2oscfg.posx, np2oscfg.posy, 100, 100); #if !defined(SUPPORT_PC9821) hWndMain = NewWindow(0, &wRect, "\pNeko Project II", FALSE, noGrowDocProc, (WindowPtr)-1, TRUE, 0); #else hWndMain = NewWindow(0, &wRect, "\pNeko Project 21", FALSE, noGrowDocProc, (WindowPtr)-1, TRUE, 0); #endif if (!hWndMain) { TRACETERM(); macossub_term(); dosio_term(); return(0); } scrnmng_initialize(); SizeWindow(hWndMain, 640, 400, TRUE); ShowWindow(hWndMain); menu_setrotate(0); menu_setdispmode(np2cfg.DISPSYNC); menu_setraster(np2cfg.RASTER); menu_setwaitflg(np2oscfg.NOWAIT); menu_setframe(np2oscfg.DRAW_SKIP); menu_setkey(0); menu_setxshift(0); menu_setf11key(np2oscfg.F11KEY); menu_setf12key(np2oscfg.F12KEY); menu_setbeepvol(np2cfg.BEEP_VOL); menu_setsound(np2cfg.SOUND_SW); menu_setjastsnd(np2oscfg.jastsnd); menu_setmotorflg(np2cfg.MOTOR); menu_setextmem(np2cfg.EXTMEM); menu_setdispclk(np2oscfg.DISPCLK); menu_setbtnrapid(np2cfg.BTN_RAPID); menu_setbtnmode(np2cfg.BTN_MODE); scrnmode = 0; if (scrnmng_create(scrnmode) != SUCCESS) { TRACETERM(); macossub_term(); dosio_term(); DisposeWindow(hWndMain); return(0); } np2open(); t = GETTICK(); while((GETTICK() - t) < 100) { if (WaitNextEvent(everyEvent, &event, 0, 0)) { eventproc(&event); } } commng_initialize(); sysmng_initialize(); mackbd_initialize(); pccore_init(); S98_init(); mousemng_initialize(); if (np2oscfg.MOUSE_SW) { // ver0.30 mousemng_enable(MOUSEPROC_SYSTEM); } // scrndraw_redraw(); pccore_reset(); #if defined(SUPPORT_RESUME) if (np2oscfg.resume) { flagload(np2resumeext, FALSE); } #endif SetEventMask(everyEvent); np2running = TRUE; while(np2running) { if (WaitNextEvent(everyEvent, &event, 0, 0)) { eventproc(&event); } else { if (np2oscfg.NOWAIT) { mackbd_callback(); 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) { mackbd_callback(); mousemng_callback(); pccore_exec(framecnt == 0); framecnt++; } else { processwait(np2oscfg.DRAW_SKIP); } } else { // auto skip if (!waitcnt) { UINT cnt; mackbd_callback(); 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(); } } else { processwait(waitcnt); waitcnt = framecnt; } } } } GetPort(&saveport); #if TARGET_API_MAC_CARBON SetPortWindowPort(hWndMain); #else SetPort(hWndMain); #endif pt.h = 0; pt.v = 0; LocalToGlobal(&pt); SetPort(saveport); if ((np2oscfg.posx != pt.h) || (np2oscfg.posy != pt.v)) { np2oscfg.posx = pt.h; np2oscfg.posy = pt.v; sysmng_update(SYS_UPDATEOSCFG); } np2running = FALSE; pccore_cfgupdate(); #if defined(SUPPORT_RESUME) if (np2oscfg.resume) { flagsave(np2resumeext); } else { flagdelete(np2resumeext); } #endif pccore_term(); S98_trash(); mousemng_disable(MOUSEPROC_SYSTEM); scrnmng_destroy(); if (sys_updates & (SYS_UPDATECFG | SYS_UPDATEOSCFG)) { initsave(); } TRACETERM(); macossub_term(); dosio_term(); DisposeWindow(hWndMain); (void)argc; (void)argv; return(0); }
void timing_reset(void) { timing.tick = GETTICK(); timing.cnt = 0; timing.fraction = 0; }