Exemple #1
0
void load_config(char * path)
{
	int i;
	char *p;

	//__android_log_print(ANDROID_LOG_DEBUG, "org.rin", "path in load_config: %s",path);

	jfile fd = jfopen(env_game_thread, path, JF_MODE_READ, NULL, 0);

	if(!fd)
	{
		init_config();
		return;
	}
	
	memset(&setting, 0, sizeof(setting));
	jfread(env_game_thread, fd, &setting, sizeof(setting));
	jfclose(env_game_thread, fd);

	tmpsetting = setting;
	memcpy(m_pal16[PAL_CUSTOM_LOCAL],setting.custom_palette, sizeof(short)*4*3);
	check_config();
	set_gb_type();
	set_speed(setting.speed);
	
}
Exemple #2
0
/* freopen() wrapper */
struct jfs *jfreopen(const char *path, const char *mode, struct jfs *stream)
{
	if (stream)
		jfclose(stream);

	stream = jfopen(path, mode);
	return stream;
}
Exemple #3
0
Fichier : 8-2.c Projet : 1sps/knr
int main(void) /* test jfopen() jfgetc() */
{
	
	FILE *fp = jfopen("test", "r");
	int c;
	
	#ifdef DEBUG
	printf("stdin fd: %d\n", stdin->fd);
	#endif
	while ((c = jgetc(fp)) != EOF)
		printf("%c", c);

	return 0;
}
Exemple #4
0
void DiskWriteMda::allocate(int N1, int N2, int N3, int N4, int N5, int N6)
{
	if (d->m_allocated) {
		printf("Warning: cannot allocate once array has been allocated.\n");
		return;
	}
	jfclose(jfopen(d->m_path.toLatin1().data(),"wb")); //remove the file
	d->m_file=jfopen(d->m_path.toLatin1().data(),"wb+");
	if (!d->m_file) {
		printf("Warning: cannot allocate. Unable to open file: %s\n",d->m_path.toLatin1().data());
		return;
	}
	int dims[MDAIO_MAX_DIMS]; for (int i=0; i<MDAIO_MAX_DIMS; i++) dims[i]=1;
	dims[0]=N1;
	dims[1]=N2;
	dims[2]=N3;
	dims[3]=N4;
	dims[4]=N5;
	dims[5]=N6;
	int num_dims=2;
	for (int i=2; i<MDAIO_MAX_DIMS; i++) {
		if (dims[i]>1) num_dims=i+1;
	}
	d->m_total_size=1;
	for (int i=0; i<num_dims; i++) {
		d->m_total_size*=dims[i];
	}
	d->m_mda_header.data_type=d->m_data_type;
	for (int i=0; i<MDAIO_MAX_DIMS; i++) d->m_mda_header.dims[i]=dims[i];
	d->m_mda_header.num_dims=num_dims;
	mda_write_header(&d->m_mda_header,d->m_file);
	float *all_zeros=(float *)jmalloc(sizeof(float)*d->m_total_size);
	for (int j=0; j<d->m_total_size; j++) all_zeros[j]=0;
	mda_write_float32(all_zeros,&d->m_mda_header,d->m_total_size,d->m_file);
	jfree(all_zeros);
	d->m_allocated=true;
}
Exemple #5
0
void save_config_glob(char * path)
{
	memcpy(setting2.custom_palette,m_pal16[PAL_CUSTOM_GLOBAL], sizeof(word)*3*4);

	//__android_log_print(ANDROID_LOG_DEBUG, "org.rin", "path in save_config_glob: %s",path);

	jfile  fd = jfopen(env_game_thread, path, JF_MODE_NEW | JF_MODE_OVERWRITE | JF_MODE_WRITE, NULL, 0);
	if(!fd)
	{
		return;
	}


	jfwrite(env_game_thread, fd, &setting2, sizeof(setting2));
	jfclose(env_game_thread, fd);
}
Exemple #6
0
int state_load(char* path)
{	
	/*FILE * fd = fopen(path,"rb");
	if (!fd){
		strcat(path,".gz");
		fd = fopen(path,"rb");
		if (!fd)
			return 0;
	}

	gb_restore_state(fd,NULL);
	fclose(fd);*/
	
	byte * buf;

	
	jfile fd = jfopen(env_game_thread, path, JF_MODE_READ, NULL, 0);
	gb_restore_state(fd, NULL);
	jfclose(env_game_thread, fd);

	
	if(rom_get_info()->gb_type == 1)
		lcd_set_mpal(0);
	else if(rom_get_info()->gb_type == 2 && sgb_mode)
		lcd_set_mpal(PAL_SGB);
	else
		lcd_set_mpal(setting.gb_palette);
		
	if(rom_get_info()->gb_type>=3 && org_gbtype==3)
		now_gb_mode = 3;
	else if(rom_get_info()->gb_type==2 && sgb_mode)
		now_gb_mode = 2;
	else
		now_gb_mode = 1;
	
	border_uploaded = 2;


	free_rewind_states();
	allocate_rewind_states();
	
	return 1;

}
Exemple #7
0
void save_config(char * path)
{
	
	char tmp[PATH_MAX];
	if(!rom_get_loaded())
	{
	    return;
	}
	else
	{
		if(rom_has_battery())
		{
			save_sram(get_sram(), rom_get_info()->ram_size,SramPath);
		}
	}

	
	memcpy(setting.custom_palette,m_pal16[PAL_CUSTOM_LOCAL], sizeof(word)*3*4);

	//__android_log_print(ANDROID_LOG_DEBUG, "org.rin", "path in save_config: %s",path);
	int i;
	for(i=0; i<sizeof(SETTING); i++){
		if ( *((byte*)&setting+i) != *((byte*)&tmpsetting+i) )
			break;
	}
	if (i>=sizeof(SETTING))
		return;


	jfile fd = jfopen(env_game_thread, path, JF_MODE_NEW | JF_MODE_OVERWRITE | JF_MODE_WRITE, NULL, 0);
	
	if(!fd)
	{
		return;
	}

	jfwrite(env_game_thread, fd, &setting, sizeof(setting));
	jfclose(env_game_thread, fd);

	tmpsetting = setting;
}
Exemple #8
0
void load_config_glob(char * path)
{
	int i;
	char *p;

	//__android_log_print(ANDROID_LOG_DEBUG, "org.rin", "path in load_config_glob: %s",path);

	jfile fd = jfopen(env_game_thread, path, JF_MODE_READ, NULL, 0);
	
	if(!fd)
	{
		init_config_glob();
		return;
	}
	
	memset(&setting2, 0, sizeof(setting2));
	jfread(env_game_thread, fd, &setting2, sizeof(setting2));
	jfclose(env_game_thread, fd);

	memcpy(m_pal16[PAL_CUSTOM_GLOBAL],setting2.custom_palette, sizeof(short)*4*3);
	check_config_glob();
}
Exemple #9
0
int load_sram(char * path)
{
	jfile fd = jfopen(env_game_thread, path, JF_MODE_READ, NULL, 0);
	
	/*if(!fd){
		strcat(SavePath, ".gz");
		fd = gzopen(SavePath, "rb");
	}*/
	
	if(!fd)
	{
		return 0;
	}
	
	int ramsize = jfread(env_game_thread, fd, sram_space, 16*0x2000+4);
	jfclose(env_game_thread, fd);
	
	if(ramsize & 4)
	{
		renderer_set_timer_state(*(int*)(sram_space+ramsize-4));
	}
	return ramsize;
}
Exemple #10
0
// load rom image by ruka
long load_rom(char *szRomPath)
{
	char name[MAX_NAME], *p, tmp[PATH_MAX];
	long lReadSize=0;
	
	p = strrchr(szRomPath, '/');
	if (!p)
		return 0;
	strcpy(name, p+1);
	char* exts[3]= {".gb",".gbc",".sgb"};
	
	
	jfile fd = jfopen(env_game_thread, szRomPath, JF_MODE_READ, exts, 3);
	
	if(fd)
	{
		int size = jfsize(env_game_thread, fd);
		lReadSize = jfread(env_game_thread, fd, rom_image, size);
		jfclose(env_game_thread, fd);
	}
	
	//lReadSize = jfile_read(env_game_thread, szRomPath, exts,3,(void **) &rom_image);
	
	/*ROM_INFO stRomInfo;
	int nRet;
	int nExtId = getExtId(szRomPath);

	switch(nExtId) {
	case EXT_GB:{	// "gb" "gbc" "sgb"
		p = strrchr(szRomPath, '/');
		if (!p)
			return 0;
		strcpy(name, p+1);

		FILE * fd = fopen(szRomPath, "r");
		lReadSize = fread(rom_image, 1, MAX_ROM_SIZE, fd);
		fclose(fd);
		break

	}case EXT_GZ:{	// "gz"
		gzFile fd = gzopen(szRomPath, "r");
		if (!gzGetOrigName(szRomPath, name, fd)){
			gzclose(fd);
			return 0;
		}else if (getExtId(name)!=EXT_GB){
			gzclose(fd);
			return 0;
		}
		lReadSize = gzread(fd, rom_image, MAX_ROM_SIZE);
		gzclose(fd);
		break;

	}case EXT_ZIP:	// "zip"
		if (path_inzip[0]){
			if (getExtId(path_inzip)!=EXT_GB)
				return 0;
			p = strrchr(path_inzip, '/');
			if (!p)
				p = path_inzip;
			else
				p++;
			strcpy(name, p);
		}else{
			p = strrchr(szRomPath, '/');
			if (!p)
				return 0;
			strcpy(name, p+1);
		}
			

		stRomInfo.p_rom_image = rom_image;
		stRomInfo.rom_size = 0;
		memset(stRomInfo.szFileName, 0x00, sizeof(stRomInfo.szFileName));
		// Unzipコールバックセット
		Unzip_setCallback(funcUnzipCallback);
		// Unzip展開する
	    nRet = Unzip_execExtract(szRomPath, (unsigned long)&stRomInfo);
		if (nRet != UZEXR_OK) {
			// 読み込み失敗! - このコードでは、UZEXR_CANCELもここに来て
			// しまうがコールバックでキャンセルしてないので無視
			lReadSize = 0;
			pgFillvram(RGBA_8(255,0,0));
			pgPrintf(0,0,0xFFFF, "Unzip fatal error.");
			pgScreenFlip();
		}
		lReadSize = stRomInfo.rom_size;
		break;
	default:
		return 0;
	}*/
	
	if(lReadSize){
		strcpy(RomName, name);
		p = strrchr(RomName, '.');
		if(p)
			*p = 0;
	}
	
	return lReadSize;
}
Exemple #11
0
int save_sram(byte *buf,int size, char * path)
{
	const int sram_tbl[]={1,1,1,4,16,8};
	

	/*char *p = strrchr(SavePath, '.');
	if (!strcmp(p,".gz")){
		if(!setting.compress)
			remove_file(SavePath);
	}else{
		if(setting.compress)*/
			//remove_file(path);
	/*}
	
	sprintf(SavePath, "%sSAVE/%s.sav", RinPath, RomName);
	if (setting.compress) 
	{
		strcat(SavePath, ".gz");
		FILE * fd = fopen(SavePath, "w");
		if (!fd)
			return 0;
	
		int sram_size = 0x2000 * sram_tbl[size];

		if ((rom_get_info()->cart_type>=0x0f) && (rom_get_info()->cart_type<=0x13))
		{
			int tmp = renderer_get_timer_state();
			memcpy(buf+sram_size, &tmp, sizeof(int));
			sram_size += sizeof(int);
		}

		cheat_decreate_cheat_map();
		gzCreate(fd, buf, sram_size);
		fclose(fd);
		cheat_create_cheat_map();
	}else
	{
		FILE * fd = fopen(path, "w");
		if(!fd)
		{
			return 0;
		}

		cheat_decreate_cheat_map();
		fwrite(buf, 0x2000*sram_tbl[size],1,fd);
		if ((rom_get_info()->cart_type>=0x0f)
		 && (rom_get_info()->cart_type<=0x13)){
			int tmp = renderer_get_timer_state();
			fwrite( &tmp, sizeof(int),1,fd);
		}
		fclose(fd);
		cheat_create_cheat_map();

	}*/
	cheat_decreate_cheat_map();
	
	int tmp;
	
	jfile fd = jfopen(env_game_thread, path, JF_MODE_OVERWRITE | JF_MODE_NEW | JF_MODE_WRITE, NULL,  0);
	cheat_decreate_cheat_map();
	
	jfwrite(env_game_thread,fd, buf, 0x2000*sram_tbl[size]);
	
	if ((rom_get_info()->cart_type>=0x0f)
		&& (rom_get_info()->cart_type<=0x13)){
		int tmp = renderer_get_timer_state();
		jfwrite( env_game_thread, fd, &tmp, sizeof(int));
	}
	jfclose(env_game_thread, fd);
	cheat_create_cheat_map();
		
	return 1;
}
Exemple #12
0
int state_save(char* path)
{
	size_t size = gb_save_state(NULL);
	byte *buf = (byte*)malloc(size);
	if (!buf)
	{
		return 0;
	}
	gb_save_state(buf);

	jfile fd = jfopen(env_game_thread, path, JF_MODE_WRITE | JF_MODE_OVERWRITE | JF_MODE_NEW, NULL, 0);
	
	if(fd)
	{
		jfwrite(env_game_thread, fd, buf, size);
		jfclose(env_game_thread, fd);
	}
	
	free(buf);
	
	char tmp[PATH_MAX];
	if(rom_has_battery())
	{
		sprintf(tmp, "%s.sram.gz", RomPath);
		save_sram(get_sram(), rom_get_info()->ram_size,tmp);
	}
	
	return size;
	
	//char temp[PATH_MAX];
	
	//int ret;

/*	if (0)//setting.compress)
	{
		sprintf(temp,"%s.gz",path);

		FILE * fd = fopen(temp, "w");
		if (fd<0){
			free(buf);
			return 0;
		}

		ret = gzCreate(fd, buf, size);
		fclose(fd);
		free(buf);
		
		if (!ret)
		{
			remove(temp);
			return 0;
		}
	}
	else
	{
		FILE * fd = fopen(path, "w");
		if (fd<0)
		{
			free(buf);
			return 0;
		}

		ret = fwrite(buf, size,1 ,fd);
		fclose(fd);
		free(buf);

		if (ret!=1){
			remove(path);
			return 0;
		}else{
			//strcat(path, ".gz");
			//remove_file(path);
		}
		return ret;
	}*/
}