Je commence à me renseigner sur quelque chose qui risque de grandement changer le confort d'utilisation de la G&W
Suivant les votes sur mon patreon ça sera mon prochain chantier ou pas ...
Pour répondre à tes questions qui sont intéressantes :
Pour la SNES, je pense qu'un support complet avec une bonne compatibilité ne sera pas possible (en ayant des performances correctes). Un support pour quelques jeux pas trop complexes pourrait peut-être voir le jour. Après je n'ai pas creusé la question plus que ça, donc peut-être qu'un jour quelqu'un va nous sortir un truc qui fonctionne bien
Je n'ai pas de réponse tranchée, je pense qu'en fait la seule réponse correcte serait "je ne sais pas".
Pour le développement, c'est une vaste question !
Par exemple pour le portage d'émulateurs, en général je fais une partie du développement (le début) sur un environnement sur Linux qui permet d'avoir une logique proche de celle dans la G&W (gestion de l'affichage, remplacement de la récupération des données dans des fichiers par des données en "ROM").
Une fois que j'ai quelque chose qui fonctionne, j'intègre le tout dans la G&W. Mais pour que ça fonctionne il faut que je fasse pas mal de modifications dans la gestion de la mémoire (car la gestion dynamique de la mémoire est très limitée sur la G&W).
Un fois tout cela effectué, je dois parfois faire des modifications dans l'émulateur car certains mécanismes sont très consommateurs en RAM, et je dois les modifier pour que la quantité ram utilisée soit plus acceptable (car sur la G&W on dispose de très peu de RAM, environ 1Mo, et cette RAM doit contenir à la fois le code de l'émulateur, les ressources mémoire de l'émulateur, et parfois la ROM décompressée).
Ensuite quand j'ai un crash sur la G&W, il y a la possibilité d'utiliser des printf pour afficher des infos dynamiquement, et on peut aussi utiliser gdb via le jtag pour mettre des points d'arrêt et faire du pas à pas. Je dois parfois aussi mettre en place des mécanismes de compression pour les jeux car souvent on n'a pas beaucoup de mémoire Flash disponible non plus pour stocker les jeux. Par exemple sur MSX et sur Amstrad, j'ai mis en place un système de compression/décompression pour les disquettes !
Concrètement la difficulté du développement sur la G&W provient du fait que la G&W n'a pas beaucoup de RAM, que le processeur a des capacités limitées, que la gestion dynamique de la RAM (malloc/free) est très limitée et ne peut pas être utilisée comme sur un système classique, qu'il n'y a pas de gestion de fichiers (pour le moment
) et que le chargement de logiciel et le debug ne sont pas forcément très pratiques.
Le portage d'un émulateur est donc une opération assez longue et complexe, il faut souvent rentrer dans les entrailles de l'émulateur pour pouvoir désactiver des choses inutiles sur la G&W, pouvoir optimisez certaines parties du code, intégrer une potentielle gestion de compression, ... Entre le moment où le portage débute et le premier résultat sur la G&W, il se passe souvent beaucoup de temps, et malheureusement avant ce moment il est difficile de savoir quel sera le résultat en terme de performances sur la G&W ! J'ai par exemple commencé à porter l'émulateur Wonderswan "Beetle Cygne" sur la G&W, mais malheureusement les performances étaient trop faibles (du 30-40fps au lieu de 75fps). J'ai donc laissé ça dans un coin.
La prochaine étape serait certainement d'optimiser les parties de code critiques en les réécrivant en assembleur ARM, mais bon ça prendrait beaucoup de temps ...