Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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();
		}
	}
}
Exemplo n.º 3
0
BOOL
taskmng_sleep(UINT32 tick)
{
	UINT32 base;

	base = GETTICK();
	while (is_proc && ((GETTICK() - base) < tick)) {
		taskmng_rol();
		usleep(20);
	}
	return is_proc;
}
Exemplo n.º 4
0
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);
}
Exemplo n.º 5
0
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);
}
Exemplo n.º 6
0
// 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);
}
Exemplo n.º 7
0
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);
}
Exemplo n.º 8
0
void
sysmng_workclockreset(void)
{

    workclock.tick = GETTICK();
    workclock.clock = CPU_CLOCK;
    workclock.draws = drawcount;
    workclock.fps = 0;
    workclock.khz = 0;
}
Exemplo n.º 9
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);
}
Exemplo n.º 10
0
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();
}
Exemplo n.º 11
0
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);
}
Exemplo n.º 12
0
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);
	}
}
Exemplo n.º 13
0
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);
}
Exemplo n.º 14
0
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);
}
Exemplo n.º 15
0
void timing_reset(void) {

	timing.tick = GETTICK();
	timing.cnt = 0;
	timing.fraction = 0;
}