Une SNES pour la Graph 90+E ?
Posté le 09/02/2019 13:41
Coucou tous le monde !
Vous avez entendu parler de la Graph 90, dernier modèle de la firme Casio, cette machine est en couleur 16 bits...
Ni une ni deux, quelques courageux développent un émulateur Game Boy Color : Prizoop. La Game Boy Color et ses 8 bits correspondait donc bien aux capacité de la calculatrice... L'émulateur se voit aujourd'hui capable de supporter les jeux monochromes de Game Boy.
D'autre, on vu là l'occasion d'une future évolution vers la Game Boy Advance, synonyme pour beaucoup de Mario Kart !
Nintendo n'est pas directement passé de la GBC à la GBA, il y a eu les Nintendo Entertainment Systems et les Super Nintendo Entertainment Systems. Ces deux consoles ont le bon goût d'être en... 16 bits soit un format de couleurs parfaitement adaptable à la Graph 90+E
Le problème est la taille de l'écran de la SNES est supérieur à celui de la Graph 90+E
Le problème qui vient maintenant et est de taille : soit on refait un autre émulateur qui ne fait que NES soit on modifie Prizoop pour qu'il intègre ses nouvelles fonctionnalités, soit on... bidouille un convertisseur style Facto-Room qui permettrait d'avoir des jeux de NES et SNES en *.gbz donc compatible avec Prizoop sans pour autant modifier celui-ci ou coder un nouvel émulateur...
Ou alors on partirait vers la GBA...
Ayant que peu de temps à moi, le lance le projet en faisant appel aux bonnes âmes motivées et dispo
Merci d'avance à tous ceux qui participeront, à élaboration de ce projet : technique, code, encouragements critiques soutient et feedback divers !
Citer : Posté le 09/02/2019 13:50 | #
De mémoire, il me semble que la SNES bien qu'en 16-bits est assez complexe à émuler fidèlement, avec l'histoire des coprocesseurs embarqués sur certaines cartouches.
La GBA est sans doute plus simple, même si les performances pourraient ne pas être au top.
L'auteur de Prizoop, l'émulateur Game Boy & Game Boy Color pour Graph 90+E, avait commencé un émulateur NES, NESizm :
https://github.com/tswilliamson/nesizm
Malheureusement je n'arrive pas à le compiler, et l'auteur n'a plus donné signe de vie dans nos communautés depuis septembre 2017.
Citer : Posté le 09/02/2019 17:35 | #
Il n'y a pas d'incompatibilité. Le SuperH-4A est aussi 32 bits. Tu es sûr que tu ne confonds pas la taille des registres du processeur et le format des couleurs de l'écran ?
Citer : Posté le 09/02/2019 17:37 | #
je confond l'encodage des couleurs et la puissance du micro-processeur effectivement Il n'empêche que sur le papier les couleurs de la Graph 90 sont encodées en 16 bits et les couleurs de la GBA sont encodées en 32 bits
Citer : Posté le 09/02/2019 17:43 | #
Il n'empêche que sur le papier les couleurs de la Graph 90 sont encodées en 16 bits et les couleurs de la GBA sont encodées en 32 bits
Certes, mais on peut toujours prendre la couleur représentable la plus proche. L'effet se verra à peine, je pense.
Citer : Posté le 09/02/2019 17:44 | #
ben, je sais pas trop l'effet que ça ferait si l'on ramenait tous sur du 16 bits...
Citer : Posté le 09/02/2019 17:46 | #
Ça se verrait pas sinon à peine. Il faut un bon écran pour que la différence se sente. Une mauvaise gestion du gamma se ferait sentir beaucoup plus. Il est également un peu difficile d'afficher des couleurs très vives sur l'écran de la Graph 90 ; je pense que cet effet-là se verra beaucoup plus.
Non, la question c'est plutôt « quel est le coût en temps (et l'impact sur les performances) nécessaire pour faire cette approximation » ?
Citer : Posté le 09/02/2019 18:14 | #
D'après la fiche technique que j'ai sous les yeux, je peux dresser une petite comparaison entre SNES et Graph 90 :
SNES:
processeur : 16 bit cadencé à 3,58 MHz maximum
RAM de travail : 128 ko
RAM vidéo : 64 ko ( décors et sprites)
nombre de couleurs : 32 768
définition : de 256 x 224 à 512 x 448 pixels ( en fonction du mode graphique)
Stockage : cartouches de 1 Mo
doc sur la SNES : ici
GRAPH 90 :
processeur : SH4A à 117 MHz ( overclockable ) 32 bits
RAM : 512 ko
RAM vidéo : ( inclus dans la RAM )
nombre de couleurs : 65 000
définition : 396 x 224 pixels
Stockage : 16 Mo
Dijkstra - The Witcher
Citer : Posté le 09/02/2019 18:25 | #
Oui, la VRAM est incluse dans la RAM classique. Il faut compter environ 170 ko de RAM. N'oublie pas que dans la RAM de travail, on a environ 512 ko de zone fixe.
La plus grosse difficulté est que l'écran n'est pas assez gros. C'est vraiment un handicap !
Citer : Posté le 09/02/2019 18:35 | #
Oui, la définition est un problème, mais ca n'est pas nouveau, et des solutions sont possibles : réduire la définition ( des sprites dessinés avec moins de pixels... ) ou rogner l'affichage ( conserver la définition, mais moins de choses à l'écran... )
Dijkstra - The Witcher
Citer : Posté le 09/02/2019 18:40 | #
Je repensais à la GBA : plutôt que de bidouiller un émulateur, on pourrait faire un convertisseur des ROM GBA vers le format *.gbz de Prizoop, en modifiant la couleurs des sprites à ce moments là, plus besoin de se casser la tête non ? Ou alors j'ai vraiment dit une connerie énorme sans m'en rendre compte ?
Citer : Posté le 09/02/2019 18:47 | #
Tu as dit une connerie... énorme. x_x
Convertir une ROM contenant du code ARM 32-bits en un format contenant du code Z80 8-bits ? Ça défie l'imagination !
Citer : Posté le 09/02/2019 18:54 | #
Ça défie l'imagination dis-tu... Aha bon tant que ça... ?
Va falloir que je me surveille alors...
Citer : Posté le 09/02/2019 18:59 | #
En gros si tu veux, pour avoir eu les deux consoles physiques entre les mains :
- la Game Boy Advance accepte les jeux Game Boy et Game Boy Color
- mais les Game Boy et Game Boy Color n'acceptent pas les jeux Game Boy Advance
La compatibilité marche dans un seul sens.
Citer : Posté le 09/02/2019 19:01 | #
Je pensais pas à ça : je soumettait l'idée que l'on fasse un convertisseur des *.gba vers le format *.gbz comme Facto Room qui transforme les *.gb et *.gbc en *.gbz Du coup nous aurions eu des ROM de GBA mais remaniée pour être compatible avec l'émulateur
Citer : Posté le 09/02/2019 19:03 | #
Tu proposes donc que l'on convertisse une ROM de jeu Game Boy Advance en une ROM de jeu Game Boy (Color), c'est bien ça ?
Comme je l'ai dit (en des termes imagés), c'est impossible à moins (entre autres) d'écrire un recompilateur ARM 32-bits vers Z80 8-bits, ce qui serait plus compliqué que de faire un émulateur Game Boy Advance complet.
Citer : Posté le 09/02/2019 19:09 | #
Oui si l'on veut, en fait même sans parler compatibilité, j'avais dans l'idée de régler le problèmes des couleurs 32 bits dès ce moment : plutôt que de faire calculer les nouvelles couleurs par la calculatrice, on convertit dans la ROM *.gba toutes les couleurs du 32 bits vers le 16 bits... Du coup c'est déjà fait : la calto n'as plus qu'a afficher les couleurs 16 bits converties par l'ordinateur du 32 bits vers le 16 bits
Citer : Posté le 09/02/2019 20:38 | #
C'est naïf !
Dans le code hexadécimal, tu ne peux pas savoir ce qui est une couleur et ce qui n'en est pas une. Le ff ff ff ff qui était stocké là peut très bien être utilisé par des fonctions différentes, une qui s'en sert comme la couleur blanche et une comme l'entier -1 ! Si tu ne la modifies pas, la couleur sera fausse, mais si tu la modifies, le calcul sera faux, ce qui est encore pire.
En plus imagine un instant que j'ai une fonction pour combiner un pixel semi-transparent avec un pixel opaque. La valeur est calculée à l'exécution, et la fonction ne marche que si les couleurs en entrée sont 24-bits. Elle renvoie en plus la valeur en 24-bits. Vas-tu patcher la fonction ?
Citer : Posté le 10/02/2019 09:13 | #
Je ne pense pas que ce projet soit à ma porté mais j'aimerais quand même comprendre comment vous allez faire pour emuler la Snes
Citer : Posté le 10/02/2019 09:35 | #
Un émulateur, dans le principe ça consiste à simuler le processeur et les périphériques (écran, manettes, etc) à l'aide d'un programme.
Pour le processeur, on écrit un programme qui lit du code assembleur et le simule dans la RAM. On ne l'a pas en matériel, le processeur simulé, mais on utilise la mémoire pour stocker l'état dans lequel il serait si on lui faisait exécuter la ROM.
Il faut également simuler la mémoire, ce qui ne pose pas de difficultés outrageuses la plupart du temps.
Ensuite, il faut simuler les périphériques ; selon les architectures la communication avec les périphériques peut se faire via des instructions spéciales ou via la mémoire. On intercepte donc ces communications et on simule également le fonctionnement des périphériques.
Enfin, on balance une ROM et enjoy! (dans les grandes lignes)
Citer : Posté le 10/02/2019 09:51 | #
Et dans le cas d'un emulateur Snes sur la graph 90, quels sont les étapes qui vont poser problème ?