Snes9x White And Green By Cedni


Newserator
 Share

Messages recommandés

Cedni propose une version modifiée de Snes9X, émulateur Super Nintendo pour PS3, apportant des retouches esthétiques (interface verte et blanche) et sur le fonctionnement de l'émulateur.

snesbycedni.jpg

Installez l'émulateur dans /dev_hdd0/game/SNES90000/USRDIR

Les roms sont recherchées d'abord dans /dev_hdd0/game/SNES90000/USRDIR/Roms puis dans /dev_usb000/Roms/Snes si absence de roms dans le répertoire précédent.

Pour naviguer dans le tableau :

- haut et bas , pour monter ou descendre

- gauche et droite , pour monter ou descendre de 5

- L1 et R1 , pour aller sur la feuille precedente ou suivante

Sont inclus les tweaks pour corriger le problème avec les roms PAL ainsi que le lag de l'autosave.

Cedni indique qu'il reste pas mal de travail surtout avec les évènements boutons pour ajouter des fonctions comme stopper l émulation et revenir au menu de sélection ou encore charger les paramètres depuis un fichier

download.gif Snes9x White And Green by Cedni

homesite.gif  Site officiel : http://gueux-forum.net/

Lien vers article original : http://ps3.gx-mod.com/modules/news/article.php?storyid=1938

Lien vers le commentaire
Partager sur d'autres sites

J'ai testé, c'est pas mal mais juste un gros défaut (chez moi du moins), l'ému est mal centré (complètement en haut a gauche de l'écran) et une fois dans le soft, plus moyen d'en sortir c'est bien dommage :/ .. Hard Reset de la console , c'est pas cool. M'enfin c'est du bon boulot tout ça :P

Lien vers le commentaire
Partager sur d'autres sites

Pour ceux qui ont un souci de cadrage , vous etes en 1080 ? Pouvez vous tester en 720 ? Chez moi c est centré

Si c est effectivement çà j aurais juste à forcer la résolution sur 720 au lancement

Ou éventuellement gèrer le code en utilisant une variable définie en fonction de la résolution

Pour le freeze , je pense que çà vient du fait qu' à un moment les fonctions min et max ne gère pas bien le current_index et laisse passer une valeur negative

Je pense que çà ressemble à un "index out list of bound"

Solution : en étant sur la première page , utiliser , les décrémentations judicieusement pour ne pas se retrouver avant 1

en effet , si vous sélectionnez la 1ere rom et faites un up , normalement çà freeze

Je ne vois pas , la dernière occurrence est bien gèrée

pour moi non fonctionnel, les roms se chargent mais après freeze de la console. Rien à faire..

T aurais pas renommer des sfc en smc ?

Je songe à développer un petit soft externe ( sur pc ) pour réduire le nom des roms

Pour les sources , remplacer le bloc rom() dans cell.cpp par :

	bool needs_update = true;	  char *file_names[8192] = { '\0' };		  bool is_dir[8192] = { false };	  char path[1024];	  const char *msg = NULL;	  int fd;	  int TestDirRom = 0;	  int num_per_page = 70, current_index = 0, file_count = 0;	  uint32_t buttons;	  const char *ROM_PATH ="/dev_hdd0/game/SNES90000/USRDIR/Roms";	  //sprintf(path, ROM_PATH);//sprintf(path, "/dev_usb000/Roms/Snes");	//sprintf(path, "/dev_hdd0/game/SNES00001/USRDIR/Roms");	int longueurChaine = 0;	int page_number = current_index / num_per_page;	  int page_base = page_number * num_per_page;  	  							  char *Tempo = NULL;							  char *Temp[8192] = { '\0' };							  	       	     void updat_list_affich (int premier) {  const char *test ="I-I";;  color4_t mycolor  = { 0x00, 0x00, 0xff, 0x00};  color4_t white	= { 0xff, 0xff, 0xFF, 0xFF };   color4_t red	  =   { 0xFF, 0xFF, 0, 0 };    color4_t green	= { 0xFF, 0, 0xFF, 0 };			  			    for (int i = page_base; i < file_count; ++i)				 {														 if ( i>page_base && i < page_base + num_per_page )					{  debugOutStr(  5+7*FONT_WIDTH  , 40 + FONT_HEIGHT*FONT_SCALE*(i - page_base )				  						  , file_names[i],i == current_index ? red : is_dir[i] ? green : white);						}				   if ( i>=page_base + 1*num_per_page  && i < page_base + 2*num_per_page )					{	debugOutStr( 5+85*FONT_WIDTH , 40 + FONT_HEIGHT*FONT_SCALE*(i - page_base -1*num_per_page)					   ,  file_names[i],i == current_index ? red : is_dir[i] ? green : white);						  }				  /* 				  // Si je veux afficher une troisieme liste				  if ( i>=page_base + 2*num_per_page  && i < page_base + 3*num_per_page )					{ color4_t white = { 0xdd, 0xaa, 0xFF, 0xFF };  color4_t red = { 0xFF, 0xFF, 0, 0 };  color4_t green = { 0xFF, 0, 0xFF, 0 };					  debugOutStr(900 , 32 + FONT_HEIGHT*FONT_SCALE*(i - page_base -2*num_per_page) 						,  file_names[i],i == current_index ? red : is_dir[i] ? green : white);					  }			 */				  }	       				    for (int i = 0; i <= num_per_page; ++i)				 {				  debugOutStr(  5				, 40 + FONT_HEIGHT*FONT_SCALE*i,"I" ,mycolor );				  debugOutStr(  5+1*FONT_WIDTH   , 40 + FONT_HEIGHT*FONT_SCALE*i,"-" ,white );				  debugOutStr(  5+2*FONT_WIDTH   , 40 + FONT_HEIGHT*FONT_SCALE*i,"I" ,mycolor );										 				  debugOutStr(  5+78*FONT_WIDTH  , 40 + FONT_HEIGHT*FONT_SCALE*i,"I" ,mycolor );				  debugOutStr(  5+79*FONT_WIDTH  , 40 + FONT_HEIGHT*FONT_SCALE*i,"-" ,white );				  debugOutStr(  5+80*FONT_WIDTH  , 40 + FONT_HEIGHT*FONT_SCALE*i,"I" ,mycolor );				  				  debugOutStr(  5+156*FONT_WIDTH , 40 + FONT_HEIGHT*FONT_SCALE*i,"I" ,mycolor );				  debugOutStr(  5+157*FONT_WIDTH , 40 + FONT_HEIGHT*FONT_SCALE*i,"-" ,white );				  debugOutStr(  5+158*FONT_WIDTH , 40 + FONT_HEIGHT*FONT_SCALE*i,"I" ,mycolor );								  }  								    for( int i=0; i<= 158;++i)		  {  				  debugOutStr(  5  + FONT_WIDTH*FONT_SCALE*i, 13,"I" ,mycolor ); 				  				  if ( i !=0  && i != 158 ) 					   {debugOutStr(  5  + FONT_WIDTH*FONT_SCALE*i, 22,"-" ,white ); }				  else 					   {debugOutStr(  5  + FONT_WIDTH*FONT_SCALE*i, 22,"I" ,mycolor );}	  				  if ( i !=1  && i != 157 && i != 79) 					   {debugOutStr(  5  + FONT_WIDTH*FONT_SCALE*i, 31,"I" ,mycolor ); }				  else 					   {debugOutStr(  5  + FONT_WIDTH*FONT_SCALE*i, 31,"-" ,white ); }				  				  if ( i !=1  && i != 157 && i != 79)  					   {debugOutStr(  5  + FONT_WIDTH*FONT_SCALE*i,  40 +FONT_HEIGHT*num_per_page+9 ,"I" ,mycolor ); }				  else 					   {debugOutStr(  5  + FONT_WIDTH*FONT_SCALE*i,  40 +FONT_HEIGHT*num_per_page+9 ,"-" ,white );}				  if ( i !=0  && i != 158)  					   {debugOutStr(  5  + FONT_WIDTH*FONT_SCALE*i,  40 +FONT_HEIGHT*num_per_page+18,"-" ,white ); }				  else 					   {debugOutStr(  5  + FONT_WIDTH*FONT_SCALE*i,  40 +FONT_HEIGHT*num_per_page+18,"I" ,mycolor ); }				  debugOutStr(  5  + FONT_WIDTH*FONT_SCALE*i,  40 +FONT_HEIGHT*num_per_page+27,"I" ,mycolor );			   }  render(); 		   }							        void rom_menu () {    while (is_running) {	  if (needs_update) 			{		   			sprintf(path, ROM_PATH);//sprintf(path, "/dev_usb000/Roms/Snes");	//sprintf(path, "/dev_hdd0/game/SNES00001/USRDIR/Roms");			  needs_update = false;			  current_index = 0;			  for (int i = 2; i < 8192; ++i) {if (file_names[i]) { free(file_names[i]);  file_names[i] = NULL; } else { break; } }			  int i = 0;			  if (cellFsOpendir(path, &fd) == CELL_FS_SUCCEEDED) 			  {	uint64_t nread;				  CellFsDirent dirent;				  while (cellFsReaddir(fd, &dirent, &nread) == CELL_FS_SUCCEEDED) 						  { 							if (nread == 0) break;					if (dirent.d_type != CELL_FS_TYPE_DIRECTORY && dirent.d_type != CELL_FS_TYPE_REGULAR) continue; // so lazy.					// Bizarrement ma liste commence par un . ou rien en premiere position					// et .. en deuxieme					//if (dirent.d_name != "." && dirent.d_name != ".." && dirent.d_name != " " && dirent.d_name != "") continue; // so lazy.							  if (dirent.d_type == CELL_FS_TYPE_REGULAR) 								   {int namelen = strlen(dirent.d_name);									  if (namelen < 4) continue;									  char *ext = dirent.d_name + namelen - 4;								  //	if ( namelen > longueurChaine ) {longueurChaine = namelen;}									  if (strcasecmp(ext, ".smc") && strcasecmp(ext, ".fig")) continue;								   }							  is_dir[i] = dirent.d_type == CELL_FS_TYPE_DIRECTORY;							  file_names[i] = strdup(dirent.d_name);			 							  						  					  /*						// je bloque carrément ici , je seche sur les conversions en c					// ^ ^ ^ heureux dans son royaume celui qui connait le c++													  // tenter de reduire la taille des noms à 50 							  Tempo = file_names[i];							  //for ( int j=0;j <50; ++j ) { Temp[j]=Tempo[j]; }							 for ( int j=0;j <50; ++j) {  strcat( Temp[j],(char *) &Tempo[j]); }							  							  file_names[i]; 							  				   // http://bytes.com/topic/c/answers/584709-how-can-i-handle-invalid-conversion-int-const-char-error				   // char crypted_aux[255];		int aux1;	strcat(crypted_aux,(char *) &aux1);  				  */						 																					  							  ++i;							   if (i == 8192) { msg = "Jesus, you have too many ROMs!"; break; }						  }				  cellFsClosedir(fd);			  } else { msg = "Directory not found . ";	}		  file_count = i;			  if (file_count == 0 &&  TestDirRom ==2 ) msg = "No ROMs";			  if (file_count == 0 &&  TestDirRom <2 ) 					 { TestDirRom++;  ROM_PATH =  "/dev_usb000/Roms/Snes";  msg=ROM_PATH; needs_update = true;	   }					  		  }		  		  // reste à tester le current index pour voir si le		  if (read_pad_buttons(&buttons)) 		   {			{			if (buttons & CTRL_DOWN)   { 										if (current_index == page_base+ 2*num_per_page) { ++current_index;}										if (current_index >= page_base+ 2*num_per_page-1)	 {  page_base+= 2*num_per_page; }										// if ( page_base > file_count/num_per_page ){ page_base =  file_count/num_per_page; }																				//++current_index;}//= MIN(current_index + 1, file_count - 1);}  										current_index = MIN(current_index + 1, file_count - 1);}  										 			  if (buttons & CTRL_UP)	 {										  // debugOutStr(32, 32 + FONT_HEIGHT * FONT_SCALE * (num_per_page + 1), current_index); 										  current_index = MAX(current_index - 1, 1);										  if (current_index <= page_base+1)	 {  page_base-= 2*num_per_page;}										  // if ( page_base < 0 ){ page_base = 0; }										  										  //--current_index;}//= MAX(current_index - 1, 0);}  										  //current_index = MAX(current_index - 1, 0);										  }  										   			  if (buttons & CTRL_RIGHT)  { if (current_index >= page_base+ 2*num_per_page-6)	 {  page_base+= 2*num_per_page; }										   //if ( page_base > file_count/num_per_page ){ page_base =  file_count/num_per_page; }																				current_index = MIN(current_index + 6, file_count - 1);}  										   			  if (buttons & CTRL_LEFT)   { if (current_index <= page_base+1)	 { page_base-= 2*num_per_page;}												  //if ( page_base < 0 ){ page_base = 0; }										  										  current_index = MAX(current_index - 5, 1);} 										   			  if (buttons & CTRL_R1)	 { if (current_index >= page_base+ 2*num_per_page-1-num_per_page)	 { page_base+= 2*num_per_page;}										   //if ( page_base > file_count/num_per_page ){ page_base =  file_count/num_per_page; }										  current_index = MIN(current_index + num_per_page, file_count - 1);										  } 										   			  if (buttons & CTRL_L1)	 { if (current_index <= page_base+1+num_per_page)	 {  page_base-= 2*num_per_page;}										   //if ( page_base < 0 ){ page_base = 0; }										   current_index = MAX(current_index - num_per_page, 1); 										  } 										   	  /*					 // pour plus tard			if (buttons & CTRL_R2)	 { if (current_index >= page_base+ 3*num_per_page+1)	 {  page_base+= 3*num_per_page;}										   //if ( page_base > file_count/num_per_page ){ page_base =  file_count/num_per_page; }										  										  current_index = MIN(current_index + 5*num_per_page, file_count - 1);} 										   				if (buttons & CTRL_L2)		 { if (current_index <= page_base-1)	 {  page_base-= 3*num_per_page;}										   //if ( page_base < 0 ){ page_base = 0; }										  										  current_index = MAX(current_index - 5*num_per_page, 0); } 		  */						//if (buttons & CTRL_R3) { Settings.Mute = false; render(false);rom_menu(); }				  //if (buttons & CTRL_START) Settings.Paused = false;}				  //if (buttons & CTRL_L3) { Settings.DisplayFrameRate=true; Settings.DisplayPressedKeys=true; } 				  //if (buttons & CTRL_R2) { Settings.Mute = false; render(false); rom_menu(); }				  //if (buttons & CTRL_L2) { Settings.DisplayFrameRate=true; Settings.DisplayPressedKeys=true; } 		   				  				  				  			  			  			  if (buttons & CTRL_CROSS) {					   if (is_dir[current_index]) 							{ sprintf(path, "%s/%s", path, file_names[current_index]);							   needs_update = true;							   continue;							} else { sprintf(rom_path, "%s/%s", path, file_names[current_index]);										return; }}}				  }					        		  memset(display, 0, color_buf[0].pitch * color_buf[0].height);		  	  updat_list_affich (page_base);	  //  pas d affichage	 car render() placer dans la fonction ci-dessus	  if (msg)			debugOutStr(32, 32 + FONT_HEIGHT * FONT_SCALE * (num_per_page + 1), msg);	  }  }

Modifié par cedni
Lien vers le commentaire
Partager sur d'autres sites

Je songe à développer un petit soft externe ( sur pc ) pour réduire le nom des roms

Salut, pour le soft, mieux vaut utiliser un qui existe déjà, tu aura juste a créer ton fichier *.dat pour gerer les noms, je vais me pencher la dessus si tu veux si cela peut aider du monde... ;)

Lien vers le commentaire
Partager sur d'autres sites

Cedni propose une version modifiée de Snes9X, émulateur Super Nintendo pour PS3, apportant des retouches esthétiques (interface verte et blanche) et sur le fonctionnement de l'émulateur.

snesbycedni.jpg

Installez l'émulateur dans /dev_hdd0/game/SNES90000/USRDIR

Les roms sont recherchées d'abord dans /dev_hdd0/game/SNES90000/USRDIR/Roms puis dans /dev_usb000/Roms/Snes si absence de roms dans le répertoire précédent.

Pour naviguer dans le tableau :

- haut et bas , pour monter ou descendre

- gauche et droite , pour monter ou descendre de 5

- L1 et R1 , pour aller sur la feuille precedente ou suivante

Sont inclus les tweaks pour corriger le problème avec les roms PAL ainsi que le lag de l'autosave.

Cedni indique qu'il reste pas mal de travail surtout avec les évènements boutons pour ajouter des fonctions comme stopper l émulation et revenir au menu de sélection ou encore charger les paramètres depuis un fichier

download.gif Snes9x White And Green by Cedni

homesite.gif Site officiel : http://gueux-forum.net/

Lien vers article original : http://ps3.gx-mod.com/modules/news/article.php?storyid=1938

bonjour

je suis un nigaut j'obtiens que la tramme verte et rien dedans je crains n'avoir pas bien compris le chemin pour mettre les roms sous une cle usb

merci

Lien vers le commentaire
Partager sur d'autres sites

Salut

http://hotfile.com/dl/71991871/b2b257d/SNE...t_exit.pkg.html

J avance aussi et je suis au même résultat , un tampon doit déborder à mon avis au chargement de la 5e rom

J ai vainement fait des free , delete et new mais rien à faire

Par contre j arrive à afficher des images mais , :encolere12: , au moins 40 fonctions pour décoder un png et l afficher

Je pense que je vais m y prendre autrement , j ai déjà ma petite idée

Sinon il y avait plus simple , c est bien de créer des fonctions mais ce n est pas utile lorsque l'on réplique le code seulement deux fois

Dans read_pad

				if ( buttons & CTRL_R2)  						{						 render(false);						 rom_menu();						}

Déclarer une variable

int NbRomsloaded = 0 ;

Et dans rom_menu

	   if (buttons & CTRL_CROSS) {					  if (is_dir[current_index]) 						   { sprintf(path, "%s/%s", path, file_names[current_index]);							  needs_update = true;							  continue;  } 						else {  if (NbRomsloaded == 4){ sys_process_exit(0); }									else{ sprintf(rom_path, "%s/%s", path,  file_names[current_index]);										  											  init_snes9x();											  init_sound();											  S9xSetSoundMute(FALSE);											  memset(display, 0, color_buf[0].height * color_buf[0].pitch);											  memset(display_back, 0, color_buf[0].height * color_buf[0].pitch);											  ++NbRomsloaded;									  return;	}	}	}

Sinon dans son code , Squarepusher ( pas Eiz ) devrait intégrer la persistance du rom_path

http://hotfile.com/dl/71991871/b2b257d/SNE...t_exit.pkg.html

Modifié par cedni
Lien vers le commentaire
Partager sur d'autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
 Share