--- np2/macos9/np2.cpp 2003/10/23 12:58:44 1.3 +++ np2/macos9/np2.cpp 2003/10/24 08:07:33 1.6 @@ -10,6 +10,7 @@ #include "mackbd.h" #include "ini.h" #include "menu.h" +#include "np2open.h" #include "dialog.h" #include "memory.h" #include "pccore.h" @@ -34,11 +35,7 @@ #define USE_RESUME -#if defined(NP2GCC) - NP2OSCFG np2oscfg = {0, 2, 0, 0, 0, 0}; -#else - NP2OSCFG np2oscfg = {0, 2, 0, 0, 0}; -#endif + NP2OSCFG np2oscfg = {0, 2, 0, 0, 0, 0}; WindowPtr hWndMain; BOOL np2running; @@ -143,6 +140,10 @@ static void HandleMenuChoice(long wParam pccore_reset(); break; + case IDM_CONFIGURE: + ConfigDialogProc(); + break; + case IDM_NEWDISK: dialog_newdisk(); break; @@ -447,7 +448,12 @@ static void HandleUpdateEvent(EventRecor hWnd = (WindowPtr)pevent->message; BeginUpdate(hWnd); - scrndraw_redraw(); + if (np2running) { + scrndraw_redraw(); + } + else { + np2open(); + } EndUpdate(hWnd); } @@ -458,7 +464,10 @@ static void HandleMouseDown(EventRecord switch(FindWindow(pevent->where, &hWnd)) { case inMenuBar: - HandleMenuChoice(MenuSelect(pevent->where)); + if (np2running) { + soundmng_stop(); + HandleMenuChoice(MenuSelect(pevent->where)); + } break; case inDrag: @@ -508,9 +517,11 @@ static void eventproc(EventRecord *event case keyDown: case autoKey: - mackbd_f12down(((event->message) & keyCodeMask) >> 8); - if (event->modifiers & cmdKey) { - HandleMenuChoice(MenuKey(event->message & charCodeMask)); + if (np2running) { + mackbd_f12down(((event->message) & keyCodeMask) >> 8); + if (event->modifiers & cmdKey) { + HandleMenuChoice(MenuKey(event->message & charCodeMask)); + } } break; @@ -562,23 +573,42 @@ static void flagsave(const char *ext) { statsave_save(path); } -static void flagload(const char *ext) { +static void flagdelete(const char *ext) { char path[MAX_PATH]; - char buf[1024]; + + getstatfilename(path, ext, sizeof(path)); + file_delete(path); +} + +static int flagload(const char *ext) { + int ret; + char path[MAX_PATH]; + char buf[1024]; + int r; + ret = IDOK; getstatfilename(path, ext, sizeof(path)); - ret = statsave_check(path, buf, sizeof(buf)); - if (ret == NP2FLAG_SUCCESS) { + r = statsave_check(path, buf, sizeof(buf)); + if (r & (~NP2FLAG_DISKCHG)) { + ResumeErrorDialogProc(); + ret = IDCANCEL; + } + else if (r & NP2FLAG_DISKCHG) { + ret = ResumeWarningDialogProc(buf); + } + if (ret == IDOK) { statsave_load(path); } + return(ret); } int main(int argc, char *argv[]) { Rect wRect; EventRecord event; + UINT t; dosio_init(); file_setcd(target); @@ -628,6 +658,14 @@ int main(int argc, char *argv[]) { return(0); } + np2open(); + t = GETTICK(); + while((GETTICK() - t) < 100) { + if (WaitNextEvent(everyEvent, &event, 0, 0)) { + eventproc(&event); + } + } + sysmng_initialize(); mackbd_initialize(); pccore_init(); @@ -638,12 +676,12 @@ int main(int argc, char *argv[]) { mouse_running(MOUSE_ON); } #endif - scrndraw_redraw(); +// scrndraw_redraw(); pccore_reset(); -#if defined(USE_RESUME) - flagload(np2resume); -#endif + if (np2oscfg.resume) { + flagload(np2resume); + } SetEventMask(everyEvent); @@ -657,6 +695,7 @@ int main(int argc, char *argv[]) { #if defined(NP2GCC) mouse_callback(); #endif + soundmng_play(); mackbd_callback(); pccore_exec(framecnt == 0); if (np2oscfg.DRAW_SKIP) { // nowait frame skip @@ -677,6 +716,7 @@ int main(int argc, char *argv[]) { #if defined(NP2GCC) mouse_callback(); #endif + soundmng_play(); mackbd_callback(); pccore_exec(framecnt == 0); framecnt++; @@ -691,6 +731,7 @@ int main(int argc, char *argv[]) { #if defined(NP2GCC) mouse_callback(); #endif + soundmng_play(); mackbd_callback(); pccore_exec(framecnt == 0); framecnt++; @@ -725,9 +766,12 @@ int main(int argc, char *argv[]) { pccore_cfgupdate(); -#if defined(USE_RESUME) - flagsave(np2resume); -#endif + if (np2oscfg.resume) { + flagsave(np2resume); + } + else { + flagdelete(np2resume); + } pccore_term(); S98_trash();