Exemple #1
0
int SampWrite( void FAR_PTR *buff, unsigned len )
{
    unsigned    written;
    int         handle;
    int         rc;

    _fstrcpy( SampName, SharedMemory->SampName );
    if( SharedMemory->SampleHandle == 0 ) {
        handle = SysCreate( SampName );
        SharedMemory->SampleHandle = 1;
    } else {
        handle = SysOpen( SampName );
        if( handle >= 0 ) SysSeek( handle, SharedMemory->SampOffset );
    }
    if( handle == -1 ) {
        SharedMemory->FarWriteProblem = 1;
        return( -1 );
    }

    written = SysWrite( handle, buff, len );
    if( written == len ) {
        SharedMemory->SampOffset += len;
        rc = 0;
    } else {
        SysSeek( handle, SharedMemory->SampOffset );
        SysWrite( handle, "", 0 );
        SharedMemory->FarWriteProblem = 1;
        rc = -1;
    }
    SysClose( handle );
    return( rc );

} /* SampWrite */
BOOL CALLBACK ConfigurePluginsDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam) {
	switch(uMsg) {
		case WM_INITDIALOG:
			SetWindowText(hW, _("Configuration"));

			Button_SetText(GetDlgItem(hW, IDOK), _("OK"));
			Button_SetText(GetDlgItem(hW, IDCANCEL), _("Cancel"));
			Static_SetText(GetDlgItem(hW, IDC_BIOS), _("Bios"));			
			return OnConfigurePluginsDialog(hW);

		case WM_COMMAND:
			switch(LOWORD(wParam)) {				
				case IDCANCEL: 
					OnCancel(hW); 
					if (CancelQuit) {
						SysClose(); exit(1);
					}
					return TRUE;
				case IDOK:     
					OnOK(hW);     
					return TRUE;
			}
	}
	return FALSE;
}
Exemple #3
0
int RecvPcsxInfo() {
	int tmp;

	if (NET_recvData == NULL || NET_sendData == NULL)
		return 0;

	NET_recvData(&Config.Xa, sizeof(Config.Xa), PSE_NET_BLOCKING);
	NET_recvData(&Config.SioIrq, sizeof(Config.SioIrq), PSE_NET_BLOCKING);
	NET_recvData(&Config.SpuIrq, sizeof(Config.SpuIrq), PSE_NET_BLOCKING);
	NET_recvData(&Config.RCntFix, sizeof(Config.RCntFix), PSE_NET_BLOCKING);
	NET_recvData(&Config.PsxType, sizeof(Config.PsxType), PSE_NET_BLOCKING);

	SysUpdate();

	tmp = Config.Cpu;
	NET_recvData(&Config.Cpu, sizeof(Config.Cpu), PSE_NET_BLOCKING);
	if (tmp != Config.Cpu) {
		psxCpu->Shutdown();
#ifdef PSXREC
		if (Config.Cpu == CPU_INTERPRETER) psxCpu = &psxInt;
		else psxCpu = &psxRec;
#else
		psxCpu = &psxInt;
#endif
		if (psxCpu->Init() == -1) {
			SysClose(); return -1;
		}
		psxCpu->Reset();
	}

	return 0;
}
Exemple #4
0
void FileClose(struct File* file)
{
	if (!file)
		return;
		
	SysClose(file->fd);
	free(file);
}
Exemple #5
0
void OnFile_Exit() {
    printf("OnFile_Exit\n");
    SysClose();
#ifndef NO_FRONTEND
    menu_finish();
    plat_finish();
    exit(0);
#endif
}
Exemple #6
0
int SampClose()
{
    SampOffset = 0;
    if( SampIsDOS ) {
        return( DOSClose( SampleHandle ) );
    } else {
        return( SysClose( SampleHandle ) );
    }
}
Exemple #7
0
int s_video_vga_server_init (s_server_conf_t *cfg)
{
	printf("Loading VGA driver.\n");
	server->window->surface->width=320;
	server->window->surface->height=200;
	server->window->surface->bytesperpixel=1;
	server->window->surface->bitsperpixel=8;
	server->window->surface->colors = 256;
	server->window->surface->blueoffset = 0;
	server->window->surface->greenoffset = 3;
	server->window->surface->redoffset = 6;
	server->window->surface->bluelength = 3;
	server->window->surface->greenlength = 3;
	server->window->surface->redlength = 2;

	SysIoAccess(1);

	int memFd=SysOpen("/System/Devices/Special/Memory", _SYS_FILE_READ | _SYS_FILE_WRITE, 0);

	if (memFd < 0)
		printf("Could not open memory device\n");

	server->window->surface->linear_buf=
		server->window->surface->vbuf=
			(unsigned char*)SysMemoryMap(0, VGA_SIZE, 7, memFd, VGA_BASE, _SYS_MMAP_PRIVATE);

	SysClose(memFd);

	if (!server->window->surface->vbuf)
		return -1;

	server->window->surface->linear_mem_base=0xA0000;
	server->window->surface->linear_mem_size=VGA_SIZE;

	if (!noGraphics)
		VgaInit();

	return 0;
}
Exemple #8
0
int open(const char* path,int oflag,...)
{
	if (!path)
	{
		errno = EFAULT;
		return -1;
	}

	if (oflag & O_EXCL)
	{
		oflag &= ~_SYS_FILE_CREATE_OPEN;
		oflag |= _SYS_FILE_FORCE_CREATE;
		oflag &= ~O_EXCL;
	}

	int fd=SysOpen((char*)path, oflag, 0);
 
	if (fd < 0)
	{
		errno=-fd;
		return -1;
	}

	if (oflag & O_TRUNC)
	{
		int err = SysTruncate(fd, 0);

		if (err < 0)
		{
			SysClose(fd);
			errno = err;
			return -1;
		}
	}
		
	return fd;
}
Exemple #9
0
int main(int argc, char *argv[])
{
	char file[MAXPATHLEN] = "";
	char path[MAXPATHLEN];
	const char *cdfile = NULL;
	const char *loadst_f = NULL;
	int psxout = 0;
	int loadst = 0;
	int i;

	emu_core_preinit();

	// read command line options
	for (i = 1; i < argc; i++) {
		     if (!strcmp(argv[i], "-psxout")) psxout = 1;
		else if (!strcmp(argv[i], "-load")) loadst = atol(argv[++i]);
		else if (!strcmp(argv[i], "-cfg")) {
			if (i+1 >= argc) break;
			strncpy(cfgfile_basename, argv[++i], MAXPATHLEN-100);	/* TODO buffer overruns */
			SysPrintf("Using config file %s.\n", cfgfile_basename);
		}
		else if (!strcmp(argv[i], "-cdfile")) {
			char isofilename[MAXPATHLEN];

			if (i+1 >= argc) break;
			strncpy(isofilename, argv[++i], MAXPATHLEN);
			if (isofilename[0] != '/') {
				getcwd(path, MAXPATHLEN);
				if (strlen(path) + strlen(isofilename) + 1 < MAXPATHLEN) {
					strcat(path, "/");
					strcat(path, isofilename);
					strcpy(isofilename, path);
				} else
					isofilename[0] = 0;
			}

			cdfile = isofilename;
		}
		else if (!strcmp(argv[i], "-loadf")) {
			if (i+1 >= argc) break;
			loadst_f = argv[++i];
		}
		else if (!strcmp(argv[i], "-h") ||
			 !strcmp(argv[i], "-help") ||
			 !strcmp(argv[i], "--help")) {
			 printf("PCSX-ReARMed " REV "\n");
			 printf("%s\n", _(
							" pcsx [options] [file]\n"
							"\toptions:\n"
							"\t-cdfile FILE\tRuns a CD image file\n"
							"\t-cfg FILE\tLoads desired configuration file (default: ~/.pcsx/pcsx.cfg)\n"
							"\t-psxout\t\tEnable PSX output\n"
							"\t-load STATENUM\tLoads savestate STATENUM (1-5)\n"
							"\t-h -help\tDisplay this message\n"
							"\tfile\t\tLoads a PSX EXE file\n"));
			 return 0;
		} else {
			strncpy(file, argv[i], MAXPATHLEN);
			if (file[0] != '/') {
				getcwd(path, MAXPATHLEN);
				if (strlen(path) + strlen(file) + 1 < MAXPATHLEN) {
					strcat(path, "/");
					strcat(path, file);
					strcpy(file, path);
				} else
					file[0] = 0;
			}
		}
	}

	if (cdfile)
		set_cd_image(cdfile);

	// frontend stuff
	// init input but leave probing to platform code,
	// they add input drivers and may need to modify them after probe
	in_init();
	pl_init();
	plat_init();
	menu_init(); // loads config

	if (emu_core_init() != 0)
		return 1;

	if (psxout)
		Config.PsxOut = 1;

	if (LoadPlugins() == -1) {
		// FIXME: this recovery doesn't work, just delete bad config and bail out
		// SysMessage("could not load plugins, retrying with defaults\n");
		set_default_paths();
		snprintf(path, sizeof(path), "." PCSX_DOT_DIR "%s", cfgfile_basename);
		remove(path);
		SysMessage("Failed loading plugins!");
		return 1;
	}
	pcnt_hook_plugins();

	if (OpenPlugins() == -1) {
		return 1;
	}
	plugin_call_rearmed_cbs();

	CheckCdrom();
	SysReset();

	if (file[0] != '\0') {
		if (Load(file) != -1)
			ready_to_go = 1;
	} else {
		if (cdfile) {
			if (LoadCdrom() == -1) {
				ClosePlugins();
				SysPrintf(_("Could not load CD-ROM!\n"));
				return -1;
			}
			emu_on_new_cd(!loadst);
			ready_to_go = 1;
		}
	}

	if (loadst_f) {
		int ret = LoadState(loadst_f);
		SysPrintf("%s state file: %s\n",
			ret ? "failed to load" : "loaded", loadst_f);
		ready_to_go |= ret == 0;
	}

	if (ready_to_go) {
		menu_prepare_emu();

		// If a state has been specified, then load that
		if (loadst) {
			int ret = emu_load_state(loadst - 1);
			SysPrintf("%s state %d\n",
				ret ? "failed to load" : "loaded", loadst);
		}
	}
	else
		menu_loop();

	pl_start_watchdog();

	while (!g_emu_want_quit)
	{
		stop = 0;
		emu_action = SACTION_NONE;

		psxCpu->Execute();
		if (emu_action != SACTION_NONE)
			do_emu_action();
	}

	printf("Exit..\n");
	ClosePlugins();
	SysClose();
	menu_finish();
	plat_finish();

	return 0;
}
Exemple #10
0
// loadISO loads an ISO, resets the system and loads the save.
int loadISO(fileBrowser_file* file) 
{
	// Refresh file pointers
	memset(&isoFile, 0, sizeof(fileBrowser_file));
	memset(&cddaFile, 0, sizeof(fileBrowser_file));
	memset(&subFile, 0, sizeof(fileBrowser_file));
	
	memcpy(&isoFile, file, sizeof(fileBrowser_file) );
	
	if(hasLoadedISO) {
		SysClose();	
		hasLoadedISO = FALSE;
	}
	SetIsoFile(&file->name[0]);
		
	if(SysInit() < 0)
		return -1;
	hasLoadedISO = TRUE;
	SysReset();
	
	char *tempStr = &file->name[0];
	if((strstr(tempStr,".EXE")!=NULL) || (strstr(tempStr,".exe")!=NULL)) {
		Load(file);
	}
	else {
		CheckCdrom();
		LoadCdrom();
	}
	
	if(autoSave==AUTOSAVE_ENABLE) {
		switch (nativeSaveDevice)
		{
		case NATIVESAVEDEVICE_SD:
		case NATIVESAVEDEVICE_USB:
			// Adjust saveFile pointers
			saveFile_dir = (nativeSaveDevice==NATIVESAVEDEVICE_SD) ? &saveDir_libfat_Default:&saveDir_libfat_USB;
			saveFile_readFile  = fileBrowser_libfat_readFile;
			saveFile_writeFile = fileBrowser_libfat_writeFile;
			saveFile_init      = fileBrowser_libfat_init;
			saveFile_deinit    = fileBrowser_libfat_deinit;
			break;
		case NATIVESAVEDEVICE_CARDA:
		case NATIVESAVEDEVICE_CARDB:
			// Adjust saveFile pointers
			saveFile_dir       = (nativeSaveDevice==NATIVESAVEDEVICE_CARDA) ? &saveDir_CARD_SlotA:&saveDir_CARD_SlotB;
			saveFile_readFile  = fileBrowser_CARD_readFile;
			saveFile_writeFile = fileBrowser_CARD_writeFile;
			saveFile_init      = fileBrowser_CARD_init;
			saveFile_deinit    = fileBrowser_CARD_deinit;
			break;
		}
		// Try loading everything
		int result = 0;
		saveFile_init(saveFile_dir);
		result += LoadMcd(1,saveFile_dir);
		result += LoadMcd(2,saveFile_dir);
		saveFile_deinit(saveFile_dir);
		
		switch (nativeSaveDevice)
		{
		case NATIVESAVEDEVICE_SD:
			if (result) autoSaveLoaded = NATIVESAVEDEVICE_SD;
			break;
		case NATIVESAVEDEVICE_USB:
			if (result) autoSaveLoaded = NATIVESAVEDEVICE_USB;
			break;
		case NATIVESAVEDEVICE_CARDA:
			if (result) autoSaveLoaded = NATIVESAVEDEVICE_CARDA;
			break;
		case NATIVESAVEDEVICE_CARDB:
			if (result) autoSaveLoaded = NATIVESAVEDEVICE_CARDB;
			break;
		}
	}	
	
	return 0;
}
Exemple #11
0
u16 ReadZodKeys()
{
    u16 pad_status = 0xffff;
    u32 keys = gp2x_joystick_read();

#ifdef PANDORA
    if(	keys & GP2X_PUSH && keys & GP2X_L ) // L2
    {
        keys |= GP2X_VOL_DOWN;
    }
    if(	keys & GP2X_PUSH && keys & GP2X_R ) // R2
    {
        keys |= GP2X_VOL_UP;
    }
#endif

    if(	keys & GP2X_VOL_DOWN ) // L2
    {
        pad_status &= ~(1<<8);
    }
    if (keys & GP2X_L)
    {
        pad_status &= ~(1<<10); // L ?
    }

    if( keys & GP2X_VOL_UP ) // R2
    {
        pad_status &= ~(1<<9);
    }
    if (keys & GP2X_R)
    {
        pad_status &= ~(1<<11); // R ?
    }

    if (keys & GP2X_UP)
    {
        pad_status &= ~(1<<4);
    }
    if (keys & GP2X_DOWN)
    {
        pad_status &= ~(1<<6);
    }
    if (keys & GP2X_LEFT)
    {
        pad_status &= ~(1<<7);
    }
    if (keys & GP2X_RIGHT)
    {
        pad_status &= ~(1<<5);
    }
    if (keys & GP2X_START)
    {
        pad_status &= ~(1<<3);
    }
    if (keys & GP2X_SELECT)
    {
        pad_status &= ~(1);
    }

    if (keys & GP2X_X)
    {
        pad_status &= ~(1<<14);
    }
    if (keys & GP2X_B)
    {
        pad_status &= ~(1<<13);
    }
    if (keys & GP2X_A)
    {
        pad_status &= ~(1<<15);
    }
    if (keys & GP2X_Y)
    {
        pad_status &= ~(1<<12);
    }

#if !defined(IPHONE) && !defined(ANDROID)
    if( (keys & GP2X_L) && (keys & GP2X_R) && (keys & GP2X_X) && (keys & GP2X_Y) && (keys & GP2X_A) && (keys & GP2X_B) )
    {
        SysClose();
    }
    if( keys == GP2X_PUSH )
    {
        // Menu system
        u32 w = gp2xscreen_width;
        u32 h = gp2xscreen_height;
        u32 isRGB24;

        gp2x_change_res(320, 240, 16);
        gp2x_sound_thread_mute();

        if( 0 != SelectOptions() )
        {
            GPU_force_res_change = 1;
            psx4all_emulating=1;
            psxCpu->Execute();
            psx4all_emulating=0;
        }
#if !defined(ANDROID)
        gp2x_sound_thread_play(NULL);
#endif
        isRGB24 = (GPU_GP1 & 0x00200000 ? 32 : 0);
        gp2x_change_res(w, h, isRGB24 ? 24 : 16);
    }
#endif

    return pad_status;
}
Exemple #12
0
int close(int fd)
{
	return SysClose(fd);
}