Exemple #1
0
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);
}
Exemple #2
0
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);
}
Exemple #3
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);
}
Exemple #4
0
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);
}