-
Programmer un emulateur.
Bonjour,
Voilà une question que je me pose, je n'ai pas forcement l'intention d'en faire un, meme si ca m'plairait, mais j'me demandais comment programmer un emulateur, par exemple de gameboy, qui m'semble relativement simple.
Par où commencer? comment ca fonctionne? extraire les données ( images, evenements... ) des roms.
J'ai une connaissance en programmation dans le C/C++, ainsi que la sdl, que j'ai vu, bon même si c'est pas forcement le meilleur, qu'on pouvait utiliser pour tout ce qui est graphique, et interaction avec l'utilisateur ( controle et tout... )
voilà ^^
-
En dehors du graphisme, tu oublies toute la partie interprétation des ROMs. Les ROMs sont dans un langage machine particulier propre à la GameBoy. Tu dois donc tout d'abord créer un simulateur pouvant simuler le processeur d'une GameBoy, s'il n'existe pas déjà. Ensuite l'émulateur pourra envoyer les instructions contenues dans la ROM au processeur simulé.
Après, bien sûr, tu pourras ajouter un peu de graphisme pour émuler l'écran de la GameBoy.
-
oui, justement, mais par où commencer? comment interpreter ce langage machine?
-
Si le sujet t'intéresse vraiment, je t'encourage à étudier les sources de gnuboy, un émulateur Open Source de GameBoy.
http://freshmeat.net/projects/gnuboy/
Si tu regardes le fichier loader.c, tu y verras le chargement d'une ROM.
-
merci beaucoup, je vais y jeter un coup d 'oeuil
-
Dans ce cas, je pense pouvoir affirmer que la gestion des graphismes, du son, des entrées, etc,... est accessoire par rapport au gros du travail: la création de la partie émulation en elle même qui doit coller parfaitement à la spec.
Tout d'abord il te faudra trouver la spec en elle même, ce qui, même si ça n'a aucun rapport avec la programmation, peut s'avérer assez ardu en soi (quoi que dans ce cas ci il est surement possible d'aller demander gentiment au concepteur d'un émulateur existant, il y en a des paquets pour la gameboy). Ensuite, fatalement, il faut comprendre la spec. Et la laisse moi te dire que tu as de quoi t'amuser, ça peut se compter en semaines pour les plus complexes (qui a dit C++?). Qui plus est, rien ne dit qu'elle sera parfaitement claire et exhaustive, beaucoup de développeurs doivent tâtonner pour certaines parties obscures (ce qui explique que pratiquement tous les émulateurs ne peuvent faire tourner certains jeux, ils ne peuvent supporter l'instruction-qu'on-utilise-jamais ou le composant intégré à la cartouche utilisé-dans-un-seul-jeu-sur-toute-l'histoire-de-la-console).
Ha oui, au cas où tu ne l'aurais pas compris, si tu n'as pas un bon niveau en anglais technique il faut oublier. Non, sans rire, il n'y a pas d'alternative.