--- np2/macos9/np2.cpp 2003/10/23 12:58:44 1.3 +++ np2/macos9/np2.cpp 2003/10/23 19:31:58 1.5 @@ -34,11 +34,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 +139,10 @@ static void HandleMenuChoice(long wParam pccore_reset(); break; + case IDM_CONFIGURE: + ConfigDialogProc(); + break; + case IDM_NEWDISK: dialog_newdisk(); break; @@ -458,6 +458,7 @@ static void HandleMouseDown(EventRecord switch(FindWindow(pevent->where, &hWnd)) { case inMenuBar: + soundmng_stop(); HandleMenuChoice(MenuSelect(pevent->where)); break; @@ -562,17 +563,35 @@ 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[]) { @@ -641,9 +660,9 @@ int main(int argc, char *argv[]) { scrndraw_redraw(); pccore_reset(); -#if defined(USE_RESUME) - flagload(np2resume); -#endif + if (np2oscfg.resume) { + flagload(np2resume); + } SetEventMask(everyEvent); @@ -657,6 +676,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 +697,7 @@ int main(int argc, char *argv[]) { #if defined(NP2GCC) mouse_callback(); #endif + soundmng_play(); mackbd_callback(); pccore_exec(framecnt == 0); framecnt++; @@ -691,6 +712,7 @@ int main(int argc, char *argv[]) { #if defined(NP2GCC) mouse_callback(); #endif + soundmng_play(); mackbd_callback(); pccore_exec(framecnt == 0); framecnt++; @@ -725,9 +747,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();