void tc8830f_device::reset() { m_stream->update(); m_playing = false; m_address = 0x100; m_bitcount = 0; m_cmd_rw = 0; // in cpu control, enter play mode and reset bitrate write_p(1); write_p(6); write_p(0); }
void trialmoves(position p, int verbose) { int m; while (p.w < 0) { if (verbose) write_p(stdout,p,0); else write_pq(stdout,p); printf("Side %d, enter move: ",p.s); scanf("%d",&m); if (m < 0 || m >= PITS || !bin(p,m)) { printf("Invalid move\n"); continue; } move(&p,m); } }
// --------------------------------------------------------------------------- // // ------------ bool bXMapTopoCheck::process(int msg, void* prm){ _bTrace_("bXMapTopoCheck::process",true); switch(msg){ case kExtProcessCallFromIntf: write_p(); break; case kExtProcessCallWithParams: break; case kExtProcessCallWithXMLTree: break; case kExtProcessCallGetData: _tm_("kExtProcessCallGetData "+_prm.activated); *((topocheck_prm*)prm)=_prm; break; case kExtProcessCallSetData: _prm=*((topocheck_prm*)prm); _tm_("kExtProcessCallSetData "+_prm.activated); break; default: return(false); } return(true); }
int main(int argc, char** argv) { int i; unsigned int cmd; unsigned int val; unsigned int addr; char* file_path; clear_screen(); #ifdef DEBUG_MODE for (i = 0; i < argc; ++i) debug_message("argv[%2d] : '%s'", i, argv[i]); #endif printf("This is NES emulator.\n"); if (argc >= 2) { char* arg = argv[1]; int arg_len = strlen(arg); if (arg_len == 2) { if (arg[0] == '-' && (arg[1] == 't' || arg[1] == 'T')) // TEST ROM init_test_rom(&hdr, ROM, pattern_table); else if (arg[0] == '-' && (arg[1] == 'd' || arg[1] == 'D')) // Dumped image { FILE* rom_image; FILE* chr_image; if (argc < 3) return 1; #if defined _WIN32 && defined _MSC_VER fopen_s(&rom_image, argv[2], "rb"); fopen_s(&chr_image, argv[3], "rb"); #elif defined __linux__ || defined __GNUC__ rom_image = fopen(argv[2], "rb"); chr_image = fopen(argv[3], "rb"); #endif if (!rom_image || !chr_image) { debug_message("Could not open dumped ROM image!"); return 1; } if (fread(ROM, ROM_SIZE, 1, rom_image) != 1) return 1; if (fread(pattern_table, PPU_PATTERN_TABLE_SIZE, 1, chr_image) != 1) return 1; fclose(rom_image); fclose(chr_image); } else if (arg[0] == '-' && (arg[1] == 'r' || arg[1] == 'R')) { if (argc < 3) { debug_message("File name required."); return 1; } if (dump_test_rom(argv[2]) != 1) { debug_message("Could not dump test ROM!"); return 1; } debug_message("Test ROM dumped!"); return 0; } else { debug_message("Invalid command line arguments!"); return 1; } } else { file_path = argv[1]; if (read_rom_image(file_path) != 1) { printf("Reading ROM image failed!\n"); return 1; } } } else if (argc < 2) { printf("Emulation failed! No ROM image supplied!\n"); return 1; } if (emulator_init() != 1) { printf("Emulator initialization failed!\n"); return 1; } run(); // Comment this line for debuging. //clear_screen(); gotoxy(REGS_X, REGS_Y); update_regs(); gotoxy(CMD_X, CMD_Y); while (!finished_emulation) { clear_cmd_line(); cmd = getch(); putchar(cmd); switch (cmd) { case 's': case 'S': step(); update_regs(); break; // Finish emulation case 'q': case 'Q': finished_emulation = 1; break; case 'w': case 'W': if (scanf_s("%4x %2x", &addr, &val)) write(addr, val); break; case 'r': case 'R': if (scanf_s("%4x", &addr)) { val = read(addr); printf(" $%04x : %02X", addr, val); } break; case 'd': case 'D': if (scanf_s("%4x %u", &addr, &val)) for (i = 0; i < (int)val; ++i) printf("\n %04X : %02X\n", addr + i, read(addr + i)); break; case 'h': case 'H': printf("\n" " S : Step\n" " Q : Quit\n" " W Addr Val : Write memory\n" " R Addr : Read memory\n" " D Addr Sz : Dump memory\n" " C Val : Run for Val cycles\n" " H : Help\n" " E : Run to PC equals to Val\n" ); break; case 'a': case 'A': if (scanf_s("%2x", &val)) write_a(&p, val); break; case 'x': case 'X': if (scanf_s("%2x", &val)) write_x(&p, val); break; case 'y': case 'Y': if (scanf_s("%2x", &val)) write_y(&p, val); break; case 'p': case 'P': if (scanf_s("%2x", &val)) write_p(&p, val | FLAG_1); break; case 'c': case 'C': if (scanf_s("%u", &val)) { run_cycles(val); update_regs(); } break; case 'e': case 'E': if (scanf_s("%4x", &val)) { while (p.pc.w != val) step(); update_regs(); } break; default: break; } } emulator_close(); return 0; }
// --------------------------------------------------------------------------- // // ------------ void bXMapTopoCheck::close(){ bStdXMap::close(); write_p(); _types.reset(); }
// --------------------------------------------------------------------------- // // ------------ bool bXMapNetClean::process(int msg, void* prm){ _bTrace_("bXMapNetClean::process",true); netcleancfg_prm* cp; netcleanact_prm* ap; bool b; switch(msg){ case kExtProcessCallFromIntf: _silent=false; process_network(true); break; case kExtProcessCallWithParams: ap=(netcleanact_prm*)prm; _silent=false; process_network(false); break; case kExtProcessCallWithXMLTree:{ if(countelements()==6){ init_data(); char val[_values_length_max_]; bGenericXMLBaseElement* elt; elt=getelement(1); elt->getvalue(val); _act_prm.create_nodes=atoi(val); if(_act_prm.create_nodes){ elt=getelement(2); elt->getvalue(val); _act_prm.cut_edges=atoi(val); } else{ _act_prm.cut_edges=false; } elt=getelement(3); elt->getvalue(val); _act_prm.join_on_nodes=atoi(val); elt=getelement(4); elt->getvalue(val); _act_prm.join_on_edges=atoi(val); if(_act_prm.join_on_nodes&&_act_prm.join_on_edges){ _act_prm.join_on_edges=false; } elt=getelement(5); elt->getvalue(val); _act_prm.check_nodes=atoi(val); elt=getelement(6); elt->getvalue(val); _act_prm.check_edges=atoi(val); _silent=true; process_network(false); _nodes.reset(); _edges.reset(); } else{ return(false); } } break; case kExtProcessCallGetData: _tm_("kExtProcessCallGetData"); cp=(netcleancfg_prm*)prm; if(cp->nodes){ cp->nodes->reset(); b=(*cp->nodes)+_nodes; } if(cp->edges){ cp->edges->reset(); b=(*cp->edges)+_edges; } cp->tnod=_cfg_prm.tnod; cp->stnod=_cfg_prm.stnod; strcpy(cp->name,_cfg_prm.name); cp->tbdg=_cfg_prm.tbdg; cp->stbdg=_cfg_prm.stbdg; cp->dnod=_cfg_prm.dnod; cp->dbdg=_cfg_prm.dbdg; cp->autoclean=_cfg_prm.autoclean; break; case kExtProcessCallSetData: _tm_("kExtProcessCallSetData"); cp=(netcleancfg_prm*)prm; if(cp->nodes){ _nodes.reset(); b=_nodes+(*cp->nodes); } if(cp->edges){ _edges.reset(); b=_edges+(*cp->edges); } _cfg_prm.tnod=cp->tnod; _cfg_prm.stnod=cp->stnod; strcpy(_cfg_prm.name,cp->name); _cfg_prm.tbdg=cp->tbdg; _cfg_prm.stbdg=cp->stbdg; _cfg_prm.dnod=cp->dnod; _cfg_prm.dbdg=cp->dbdg; _cfg_prm.autoclean=cp->autoclean; write_p(); break; default: return(false); } return(true); }
// --------------------------------------------------------------------------- // // ------------ void bXMapNetClean::close(){ bStdXMap::close(); write_p(); _nodes.reset(); _edges.reset(); }
int main(int argc, char* argv[]) { if (argc != 2) { fprintf(stderr, "[-] Error: usage: %s config_file\n", argv[0]); return EXIT_FAILURE; } char* filename = argv[1]; FILE* fp = fopen(filename, "r"); if (!fp) { fprintf(stderr, "[-] Error: failed to open file %s\n", filename); return EXIT_FAILURE; } /* File buffer */ char* buffer; int nbytes = 128; buffer = (char*)malloc(2048*sizeof(char)); /* Parsing vars */ int m_size; int p_id; int p_size; int r_page; int r_id; int w_page; int w_id; int e_id; init_process_table(); /* Main loop */ while ((getline(&buffer, (size_t*)&nbytes, fp) != -1)) { /* Todas as operações começam com letras diferentes */ switch(buffer[0]) { case 'M': /* MEMSIZE SIZE */ case 'm': parse_memsize(buffer, &m_size); printf("[+] MEMSIZE %d\n", m_size); memsize(m_size); break; case 'P': /* PROCSIZE ID SIZE */ case 'p': parse_procsize(buffer, &p_id, &p_size); printf("[+] PROCSIZE %d %d\n", p_id, p_size); procsize(p_id, p_size); break; case 'R': /* READ PAGE ID */ case 'r': parse_read(buffer, &r_page, &r_id); printf("[+] READ %d %d\n", r_page, r_id); read_p(r_page, r_id); break; case 'W': /* WRITE PAGE ID */ case 'w': parse_write(buffer, &w_page, &w_id); printf("[+] WRITE %d %d\n", w_page, w_id); write_p(w_page, w_id); break; case 'E': /* ENDPROC ID */ case 'e': parse_endproc(buffer, &e_id); printf("[+] ENDPROC %d\n", e_id); endproc(e_id); break; default: printf("[-] Invalid Operation!\n"); } } /* Write stats here */ write_stats(); fclose(fp); return EXIT_SUCCESS; }