void nes_setrun(NES *nes, int run) { if (run) { nes_textout(nes, 0, 222, "running", 2000, 1); } else { nes_textout(nes, 0, 222, "paused" , -1 , 1); Sleep(16); } nes->isrunning = run; nes->ispaused = 0; if (!run) while (!nes->ispaused) Sleep(1); }
void nes_reset(NES *nes) { // disable ndb debugging will make cpu keep running ndb_set_debug(&(nes->ndb), NDB_DEBUG_MODE_DISABLE); nes->request_reset = 1; // request reset nes_textout(nes, 0, 222, "reset", 2000, 1); }
int nes_load_replay(NES *nes, char *file) { FILE *fpsrc = fopen(file, "rb"); FILE *fpdst = NULL; int running = 0; int ret = 0; // pause nes thread if running running = nes_getrun(nes); if (running) nes_setrun(nes, 0); // close lastreplay file if (nes->replay.fp) { fclose(nes->replay.fp); nes->replay.fp = NULL; } fpdst = fopen(nes->replay.fname, "wb"); ret = copyfile(fpdst, fpsrc); // set replay to play mode nes->replay.mode = NES_REPLAY_PLAY; // reset nes nes_reset(nes); // show text nes_textout(nes, 0, 222, "replay", -1, 2); // resume running if (running) nes_setrun(nes, 1); return ret; }