--- np2/macosx/np2.cpp 2003/10/17 04:11:23 1.3 +++ np2/macosx/np2.cpp 2003/10/22 16:40:45 1.10 @@ -27,11 +27,18 @@ #include "fddfile.h" #include "statsave.h" +#if defined(NP2GCC) +#include "mousemng.h" +#endif #define USE_RESUME +#if defined(NP2GCC) + NP2OSCFG np2oscfg = {0, 2, 0, 0, 0, 0}; +#else NP2OSCFG np2oscfg = {0, 2, 0, 0, 0}; +#endif WindowPtr hWndMain; BOOL np2running; @@ -115,13 +122,11 @@ static void MenuBarInit(void) { DrawMenuBar(); } - static void changescreen(BYTE mode) { (void)mode; } - static void HandleMenuChoice(long wParam) { UINT update; @@ -241,6 +246,14 @@ static void HandleMenuChoice(long wParam update |= SYS_UPDATECFG; break; +#if defined(NP2GCC) + case IDM_MOUSE: + mouse_running(MOUSE_XOR); + menu_setmouse(np2oscfg.MOUSE_SW ^ 1); + sysmng_update(SYS_UPDATECFG); + break; +#endif + case IDM_KEY: menu_setkey(0); keystat_resetjoykey(); @@ -463,6 +476,14 @@ static void HandleMouseDown(EventRecord break; case inContent: +#if defined(NP2GCC) + if (controlKey & GetCurrentKeyModifiers() ) { + mouse_btn(MOUSE_RIGHTDOWN); + } + else { + mouse_btn(MOUSE_LEFTDOWN); + } +#endif break; case inGoAway: @@ -485,23 +506,32 @@ static void eventproc(EventRecord *event case keyDown: case autoKey: + mackbd_f12down(((event->message) & keyCodeMask) >> 8); if (event->modifiers & cmdKey) { - if (!mackbd_down(1, ((event->message) & keyCodeMask) >> 8)) { - HandleMenuChoice(MenuKey(event->message & charCodeMask)); - } - } - else { - mackbd_down(0, ((event->message) & keyCodeMask) >> 8); + HandleMenuChoice(MenuKey(event->message & charCodeMask)); } break; case keyUp: - mackbd_up(((event->message) & keyCodeMask) >> 8); + mackbd_f12up(((event->message) & keyCodeMask) >> 8); break; + +#if defined(NP2GCC) + case mouseUp: + if (controlKey & GetCurrentKeyModifiers()) { + mouse_btn(MOUSE_RIGHTUP); + } + else { + mouse_btn(MOUSE_LEFTUP); + } + break; +#endif } } +// ---- + static void processwait(UINT waitcnt) { if (timing_getcount() >= waitcnt) { @@ -533,9 +563,14 @@ static void flagsave(const char *ext) { static void flagload(const char *ext) { char path[MAX_PATH]; + char buf[1024]; + int ret; getstatfilename(path, ext, sizeof(path)); - statsave_load(path); + ret = statsave_check(path, buf, sizeof(buf)); + if (ret == NP2FLAG_SUCCESS) { + statsave_load(path); + } } int main(int argc, char *argv[]) { @@ -552,10 +587,13 @@ int main(int argc, char *argv[]) { initload(); + TRACEINIT(); + SetRect(&wRect, 100, 100, 100, 100); hWndMain = NewWindow(0, &wRect, "\pNeko Project II", FALSE, noGrowDocProc, (WindowPtr)-1, TRUE, 0); if (!hWndMain) { + TRACETERM(); macossub_term(); dosio_term(); return(0); @@ -581,6 +619,7 @@ int main(int argc, char *argv[]) { scrnmode = 0; if (scrnmng_create(scrnmode) != SUCCESS) { + TRACETERM(); macossub_term(); dosio_term(); DisposeWindow(hWndMain); @@ -588,9 +627,15 @@ int main(int argc, char *argv[]) { } sysmng_initialize(); + mackbd_initialize(); pccore_init(); S98_init(); +#if defined(NP2GCC) + if (np2oscfg.MOUSE_SW) { // ver0.30 + mouse_running(MOUSE_ON); + } +#endif scrndraw_redraw(); pccore_reset(); @@ -607,6 +652,9 @@ int main(int argc, char *argv[]) { } else { if (np2oscfg.NOWAIT) { +#if defined(NP2GCC) + mouse_callback(); +#endif mackbd_callback(); pccore_exec(framecnt == 0); if (np2oscfg.DRAW_SKIP) { // nowait frame skip @@ -624,6 +672,9 @@ int main(int argc, char *argv[]) { } else if (np2oscfg.DRAW_SKIP) { // frame skip if (framecnt < np2oscfg.DRAW_SKIP) { +#if defined(NP2GCC) + mouse_callback(); +#endif mackbd_callback(); pccore_exec(framecnt == 0); framecnt++; @@ -634,20 +685,32 @@ int main(int argc, char *argv[]) { } else { // auto skip if (!waitcnt) { + UINT cnt; +#if defined(NP2GCC) + mouse_callback(); +#endif mackbd_callback(); pccore_exec(framecnt == 0); framecnt++; - if (timing_getcount() < framecnt) { + // ¥Æ¥¹¥È + cnt = timing_getcount(); + if (framecnt > cnt) { waitcnt = framecnt; if (framemax > 1) { framemax--; } } else if (framecnt >= framemax) { - waitcnt = framecnt; if (framemax < 12) { framemax++; } + if (cnt >= 12) { + timing_init(); + } + else { + timing_setcount(cnt - framecnt); + } + framecnt = 0; } } else { @@ -668,6 +731,10 @@ int main(int argc, char *argv[]) { pccore_term(); S98_trash(); +#if defined(NP2GCC) + mouse_running(MOUSE_OFF); +#endif + scrnmng_destroy(); if (sys_updates & (SYS_UPDATECFG | SYS_UPDATEOSCFG)) {