static void processwait(UINT waitcnt) { if (timing_getcount() >= waitcnt) { timing_setcount(0); framereset(); } }
void main_loop(){ if(!taskmng_isavail()) return; taskmng_rol(); if (np2oscfg.NOWAIT) { 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) { pccore_exec(framecnt == 0); framecnt++; } else { processwait(np2oscfg.DRAW_SKIP); } } else { // auto skip if (!waitcnt) { UINT cnt; 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; } } }
static void processwait(NP2MAIN &np2m, UINT uCount) { if (timing_getcount() >= uCount) { timing_setcount(0); framereset(np2m, uCount); } else { Sleep(960); } }
static void processwait(UINT cnt) { if (timing_getcount() >= cnt) { timing_setcount(0); framereset(cnt); } else { taskmng_sleep(1); } }
static void processwait(UINT cnt) { if (timing_getcount() >= cnt) { timing_setcount(0); framereset(); } else { Sleep(1); } soundmng_sync(); }
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst, LPSTR lpszCmdLine, int nCmdShow) { WNDCLASS wc; MSG msg; HWND hWnd; int i; #ifdef OPENING_WAIT UINT32 tick; #endif _MEM_INIT(); GetModuleFileName(NULL, modulefile, NELEMENTS(modulefile)); dosio_init(); file_setcd(modulefile); np2arg_analize(); initload(); memdbg_readini(); skbdwin_readini(); rand_setseed((unsigned)time(NULL)); if ((hWnd = FindWindow(szClassName, NULL)) != NULL) { ShowWindow(hWnd, SW_RESTORE); SetForegroundWindow(hWnd); dosio_term(); return(FALSE); } hInst = hInstance; hPrev = hPreInst; TRACEINIT(); if (np2oscfg.KEYBOARD >= KEY_TYPEMAX) { // ver0.28 int keytype = GetKeyboardType(1); if ((keytype & 0xff00) == 0x0d00) { np2oscfg.KEYBOARD = KEY_PC98; } else if (!keytype) { np2oscfg.KEYBOARD = KEY_KEY101; } else { np2oscfg.KEYBOARD = KEY_KEY106; } } keystat_initialize(); if (!hPreInst) { wc.style = CS_BYTEALIGNCLIENT | CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1)); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); wc.lpszMenuName = MAKEINTRESOURCE(IDR_MAIN); wc.lpszClassName = szClassName; if (!RegisterClass(&wc)) { return(FALSE); } } memdbg_initialize(hInstance); skbdwin_initialize(hInstance); mousemng_initialize(); hWnd = CreateWindowEx(0, szClassName, szAppCaption, WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX, np2oscfg.winx, np2oscfg.winy, 640, 400, NULL, NULL, hInstance, NULL); hWndMain = hWnd; scrnmng_initialize(); xmenu_setroltate(0); xmenu_setdispmode(np2cfg.DISPSYNC); xmenu_setraster(np2cfg.RASTER); xmenu_setwaitflg(np2oscfg.NOWAIT); xmenu_setframe(np2oscfg.DRAW_SKIP); xmenu_setkey(0); xmenu_setxshift(0); xmenu_setf12copy(np2oscfg.F12COPY); xmenu_setbeepvol(np2cfg.BEEP_VOL); xmenu_setsound(np2cfg.SOUND_SW); xmenu_setjastsound(np2oscfg.jastsnd); xmenu_setmotorflg(np2cfg.MOTOR); xmenu_setextmem(np2cfg.EXTMEM); xmenu_setmouse(np2oscfg.MOUSE_SW); xmenu_setbtnmode(np2cfg.BTN_MODE); xmenu_setbtnrapid(np2cfg.BTN_RAPID); xmenu_setmsrapid(np2cfg.MOUSERAPID); ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); #ifdef OPENING_WAIT tick = GetTickCount(); #endif sysmenu_initialize(); xmenu_initialize(); DrawMenuBar(hWnd); // ver0.30 if (file_attr_c(np2help) == (short)-1) { EnableMenuItem(GetMenu(hWnd), IDM_HELP, MF_GRAYED); } scrnmode = 0; if (np2arg.fullscreen) { scrnmode |= SCRNMODE_FULLSCREEN; } if (np2cfg.RASTER) { scrnmode |= SCRNMODE_HIGHCOLOR; } if (scrnmng_create(scrnmode) != SUCCESS) { scrnmode ^= SCRNMODE_FULLSCREEN; if (scrnmng_create(scrnmode) != SUCCESS) { MessageBox(hWnd, _T("Couldn't create DirectDraw Object"), szAppCaption, MB_OK | MB_ICONSTOP); return(FALSE); } } soundmng_initialize(); if (np2oscfg.MOUSE_SW) { // ver0.30 mousemng_enable(MOUSEPROC_SYSTEM); } commng_initialize(); sysmng_initialize(); joy_init(); pccore_init(); S98_init(); #ifdef OPENING_WAIT while((GetTickCount() - tick) < OPENING_WAIT); #endif scrndraw_redraw(); pccore_reset(); np2opening = 0; // れじうむ #if defined(SUPPORT_RESUME) if (np2oscfg.resume) { int id; id = flagload(str_sav, str_resume, FALSE); if (id == IDYES) { for (i=0; i<4; i++) np2arg.disk[i] = NULL; } else if (id == IDCANCEL) { DestroyWindow(hWnd); mousemng_disable(MOUSEPROC_WINUI); S98_trash(); pccore_term(); soundmng_deinitialize(); scrnmng_destroy(); TRACETERM(); dosio_term(); return(0); } } #endif // リセットしてから… コマンドラインのディスク挿入。 // ver0.29 for (i=0; i<4; i++) { if (np2arg.disk[i]) { diskdrv_readyfdd((REG8)i, np2arg.disk[i], 0); } } memdbg_create(); skbdwin_create(); while(1) { if (PeekMessage(&msg, 0, 0, 0, PM_NOREMOVE)) { if (!GetMessage(&msg, NULL, 0, 0)) { break; } if ((msg.message != WM_SYSKEYDOWN) && (msg.message != WM_SYSKEYUP)) { TranslateMessage(&msg); } DispatchMessage(&msg); } else { if (np2oscfg.NOWAIT) { joy_flash(); mousemng_sync(); 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_sync(); pccore_exec(framecnt == 0); framecnt++; } else { processwait(np2oscfg.DRAW_SKIP); } } else { // auto skip if (!waitcnt) { UINT cnt; joy_flash(); mousemng_sync(); 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; } } } } pccore_cfgupdate(); mousemng_disable(MOUSEPROC_WINUI); S98_trash(); #if defined(SUPPORT_RESUME) if (np2oscfg.resume) { flagsave(str_sav); } else { flagdelete(str_sav); } #endif pccore_term(); memdbg_destroy(); skbdwin_destroy(); soundmng_deinitialize(); scrnmng_destroy(); if (sys_updates & (SYS_UPDATECFG | SYS_UPDATEOSCFG)) { initsave(); memdbg_writeini(); skbdwin_writeini(); } skbdwin_deinitialize(); TRACETERM(); _MEM_USED("report.txt"); dosio_term(); return static_cast<int>(msg.wParam); }
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); }
int SDL_main(int argc, char **argv) { int pos; char *p; int id; pos = 1; while(pos < argc) { p = argv[pos++]; if ((!milstr_cmp(p, "-h")) || (!milstr_cmp(p, "--help"))) { usage(argv[0]); goto np2main_err1; } else { printf("error command: %s\n", p); goto np2main_err1; } } dosio_init(); file_setcd(datadir); initload(); TRACEINIT(); if (fontmng_init() != SUCCESS) { goto np2main_err2; } inputmng_init(); keystat_initialize(); if (sysmenu_create() != SUCCESS) { goto np2main_err3; } mousemng_initialize(); scrnmng_initialize(); if (scrnmng_create(FULLSCREEN_WIDTH, FULLSCREEN_HEIGHT) != SUCCESS) { goto np2main_err4; } sdlkbd_initialize(); // this must be after SDL_VIDEO initialized soundmng_initialize(); commng_initialize(); sysmng_initialize(); taskmng_initialize(); pccore_init(); S98_init(); mousemng_hidecursor(); scrndraw_redraw(); pccore_reset(); if (np2oscfg.resume) { id = flagload(str_sav, str_resume, FALSE); if (id == DID_CANCEL) { goto np2main_err5; } } while(taskmng_isavail()) { taskmng_rol(); if (np2oscfg.NOWAIT) { 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) { pccore_exec(framecnt == 0); framecnt++; } else { processwait(np2oscfg.DRAW_SKIP); } } else { // auto skip if (!waitcnt) { UINT cnt; 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; } } } pccore_cfgupdate(); if (np2oscfg.resume) { flagsave(str_sav); } else { flagdelete(str_sav); } pccore_term(); S98_trash(); soundmng_deinitialize(); if (sys_updates & (SYS_UPDATECFG | SYS_UPDATEOSCFG)) { initsave(); } scrnmng_destroy(); sysmenu_destroy(); TRACETERM(); SDL_Quit(); dosio_term(); return(SUCCESS); np2main_err5: pccore_term(); S98_trash(); soundmng_deinitialize(); np2main_err4: scrnmng_destroy(); np2main_err3: sysmenu_destroy(); np2main_err2: TRACETERM(); SDL_Quit(); dosio_term(); np2main_err1: return(FAILURE); }
int main(void) { NP2MAIN np2main; #ifndef NOSERIAL serial_init(57600); usleep(20000); printf("Serial OK\n"); #endif maple_init(); dc_setup_ta(); init_arm(); __dc_avail = true; dc_savedtimes = 0; dc_joyinput = 0; dc_mouseaxis1 = 0; dc_mouseaxis2 = 0; ui_init(); dosio_init(); file_setcd(modulefile); initload(); TRACEINIT(); keystat_initialize(); mousemng_initialize(); scrnmng_initialize(); UINT8 scrnmode = 0; if (scrnmng_create(scrnmode) != SUCCESS) { return -1; } softkbddc_initialize(); dckbd_bindinit(); dckbd_bindcur(np2oscfg.bindcur); dckbd_bindbtn(np2oscfg.bindbtn); soundmng_initialize(); commng_initialize(); sysmng_initialize(); taskmng_initialize(); joymng_initialize(); pccore_init(); S98_init(); pccore_reset(); scrndraw_redraw(); np2main.uFrameCount = 0; np2main.uWaitCount = 0; np2main.uFrameMax = 1; #if 0 if (np2oscfg.resume) { id = flagload(str_sav, str_resume, FALSE); if (id == DID_CANCEL) { DestroyWindow(hWnd); goto np2main_err4; } } #endif while (dcsys_task()) { if (np2oscfg.NOWAIT) { exec1frame(np2main); if (np2oscfg.DRAW_SKIP) { // nowait frame skip if (np2main.uFrameCount >= np2oscfg.DRAW_SKIP) { processwait(np2main, 0); } } else { // nowait auto skip if (timing_getcount()) { processwait(np2main, 0); } } } else if (np2oscfg.DRAW_SKIP) { // frame skip if (np2main.uFrameCount < np2oscfg.DRAW_SKIP) { exec1frame(np2main); } else { processwait(np2main, np2oscfg.DRAW_SKIP); } } else { // auto skip if (!np2main.uWaitCount) { exec1frame(np2main); const UINT uCount = timing_getcount(); if (np2main.uFrameCount > uCount) { np2main.uWaitCount = np2main.uFrameCount; if (np2main.uFrameMax > 1) { np2main.uFrameMax--; } } else if (np2main.uFrameCount >= np2main.uFrameMax) { if (np2main.uFrameMax < MAX_FRAMESKIP) { np2main.uFrameMax++; } if (uCount >= MAX_FRAMESKIP) { timing_reset(); } else { timing_setcount(uCount - np2main.uFrameCount); } framereset(np2main, 0); } } else { processwait(np2main, np2main.uWaitCount); np2main.uWaitCount = np2main.uFrameCount; } } } pccore_cfgupdate(); #if 0 if (np2oscfg.resume) { flagsave(str_sav); } else { flagdelete(str_sav); } #endif pccore_term(); S98_trash(); scrnmng_destroy(); if (sys_updates & (SYS_UPDATECFG | SYS_UPDATEOSCFG)) { initsave(); } TRACETERM(); dosio_term(); #ifdef NOSERIAL (*(void(**)(int))0x8c0000e0)(1); while (1) { } #endif return 0; }