static u8 get_pin_func(char *str) { char *p,*tmp = strdup(str); u8 ret = P_ERROR; //make lowercase for(p = tmp;*p;p++) *p = tolower(*p); p = str_eatwhitespace(tmp); //not connected if(strncmp(p,"nc",2) == 0) ret = P_NC; //prg pin else if(strncmp(p,"prg",3) == 0) { p += 3; p = str_eatwhitespace(p); if(*p == 'a') { p++; ret = P_PRG_A0 + atoi(p); } } //chr pin else if(strncmp(p,"chr",3) == 0) { p += 3; p = str_eatwhitespace(p); if(*p == 'a') { p++; ret = P_CHR_A0 + atoi(p); } } //unknown function if(ret == P_ERROR) { log_printf("get_pin_func: unknown pin function '%s'\n",str); } free(tmp); return(ret); }
int cartdb_init() { char filename[1024]; char *str,*str2,*p; xml_t *xml; config_get_eval_string(filename,"cartdb.filename"); if(cartxml) { return(0); } str = strtok(filename,";"); while(str != 0) { str2 = mem_strdup(str); p = str_eatwhitespace(str2); if((xml = parser_load(p)) == 0) { log_printf("cartdb_init: error loading xml cart database '%s'\n",p); } else { log_printf("cartdb_init: loaded xml cart database '%s'\n",p); if(cartxml == 0) cartxml = xml; else parser_merge(cartxml,&xml); } mem_free(str2); str = strtok(0,";"); } if(cartxml == 0) { log_printf("cartdb_init: no xml databases loaded, continuing without using cartdb\n"); return(0); } return(0); }
LRESULT CALLBACK CartDBFilesDlg(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { char *p,*tmp,*str = (char*)(LONG_PTR)GetWindowLongPtr(hwnd,GWLP_USERDATA); int n,i; switch(message) { case WM_INITDIALOG: SetWindowLongPtr(hwnd,GWLP_USERDATA,(LONG)(LONG_PTR)lParam); str = strdup((char*)lParam); p = strtok(str,";"); while(p) { tmp = strdup(p); ListBox_AddString(GetDlgItem(hwnd,IDC_FILELIST),str_eatwhitespace(tmp)); free(tmp); p = strtok(0,";"); } free(str); EnableWindow(GetDlgItem(hwnd,IDC_DELETEBUTTON),FALSE); return(TRUE); case WM_COMMAND: switch(LOWORD(wParam)) { case IDC_FILELIST: switch(HIWORD(wParam)) { case LBN_DBLCLK: tmp = (char*)mem_alloc(1024); n = ListBox_GetCurSel(GetDlgItem(hwnd,IDC_FILELIST)); ListBox_GetText(GetDlgItem(hwnd,IDC_FILELIST),n,tmp); tmp = (char*)DialogBoxParam(hInst,(LPCTSTR)IDD_FILEEDIT,hwnd,(DLGPROC)FileEditDlg,(LPARAM)(char*)tmp); if(tmp) { ListBox_DeleteString(GetDlgItem(hwnd,IDC_FILELIST),n); ListBox_InsertString(GetDlgItem(hwnd,IDC_FILELIST),n,tmp); mem_free(tmp); } return(TRUE); case LBN_SELCHANGE: EnableWindow(GetDlgItem(hwnd,IDC_DELETEBUTTON),TRUE); return(TRUE); case LBN_SELCANCEL: EnableWindow(GetDlgItem(hwnd,IDC_DELETEBUTTON),FALSE); return(TRUE); } break; case IDC_ADDBUTTON: tmp = (char*)DialogBoxParam(hInst,(LPCTSTR)IDD_FILEEDIT,hwnd,(DLGPROC)FileEditDlg,0); if(tmp) { ListBox_AddString(GetDlgItem(hwnd,IDC_FILELIST),tmp); mem_free(tmp); } return(TRUE); case IDC_DELETEBUTTON: n = ListBox_GetCurSel(GetDlgItem(hwnd,IDC_FILELIST)); if(n != LB_ERR) ListBox_DeleteString(GetDlgItem(hwnd,IDC_FILELIST),n); return(TRUE); case IDOK: n = ListBox_GetCount(GetDlgItem(hwnd,IDC_FILELIST)); strcpy(str,""); tmp = (char*)mem_alloc(1024); for(i=0;i<n;i++) { if(i) strcat(str," ; "); ListBox_GetText(GetDlgItem(hwnd,IDC_FILELIST),i,tmp); strcat(str,tmp); } mem_free(tmp); EndDialog(hwnd,(INT_PTR)str); return(TRUE); case IDCANCEL: EndDialog(hwnd,(INT_PTR)NULL); return(TRUE); } break; case WM_DESTROY: break; } return(FALSE); }
int emu_mainloop_test(char *script) { u64 t,total,frames; char line[1024],*rom,*test,*p; memfile_t *file; int testrunning = 0; log_printf("emu_mainloop_test: starting automated tests from '%s'\n",script); if((file = memfile_open(script,"rb")) == 0) { log_printf("emu_mainloop_test: error opening test script '%s'\n",script); return(0); } //begin the main loop total = 0; frames = 0; while(quit == 0) { if(nes->movie.mode & (MOVIE_CRCFAIL | MOVIE_CRCPASS)) { if(nes->movie.mode & MOVIE_CRCFAIL) log_printf("emu_mainloop_test: test over. failed. (rom = '%s')\n",rom); if(nes->movie.mode & MOVIE_CRCPASS) log_printf("emu_mainloop_test: test over. passed. (rom = '%s')\n",rom); testrunning = 0; } if(testrunning == 0) { do { if(memfile_gets(line,1024,file) == 0) { quit++; p = 0; break; } p = str_eatwhitespace(line); log_printf("line: %s",p); } while(*p == '#'); if(p == 0) break; rom = str_eatwhitespace(strtok(p,";\r\n")); test = str_eatwhitespace(strtok(0,";\r\n")); log_printf("rom, test = '%s', '%s'\n",rom,test); if(emu_event(E_LOADROM,(void*)rom) == 0) { if(emu_event(E_LOADMOVIE,(void*)test) == 0) { emu_event(E_PLAYMOVIE,0); testrunning = 1; } } } t = system_gettick(); system_checkevents(); input_poll(); video_startframe(); if(running && nes->cart) { nes_frame(); } video_endframe(); total += system_gettick() - t; frames++; } log_printf("fps: %f (%d frames)\n",(double)frames / (double)total * system_getfrequency(),frames); memfile_close(file); return(0); }