Aller au contenu

Faire Un émulateur


Messages recommandés

Salut,

je cherche à faire un émulateur NES ou SNES mais je ne sais pas comment faire ni quels outils utiliser, pourriez vous me passer une bonne adresse avec un tutorial (pour débutant ^^ ) afin que je puisse "essayer" de réaliser mon émulateur.

Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

Alors plusieurs pistes (enfin ce sont les outils que j'ai choisis) pour émuler la NES :

- Environnement de développement :class:/b] Visual C++

- Language de programmation : C++ :lol:

- Emuler le CPU : jte conseille d'utiliser un émulateur open source du 6502, c'est le plus pratique. Bon après faut l'intégrer à ton code, et ça c'est assez chiant. Le CPU est en fait capable d'effectuer un nombre limité d'opérations appellées opcodes, tu lui envoies des arguments, tu précises l'opcode utilisé, et il te renvoie le résultat.

Il faut aussi avoir en tête que le CPU lit et écrit en mémoire, et qu'il faut la plupart rajouter des routines capables de lire la mémoire (pour fournir des arguments aux opcodes) mais aussi d'y écrire (pour écrire le résultat de l'opcode). Enfin, ce genre de code intègre les interruptions, c'est-à-dire ce qui sort le CPU de son ronronnement, comme l'appui d'une touche de la manette, etc.

Au final, il faut donc apprendre à ton processeur à communiquer avec la RAM, les I/O (entrées-sorties, comme le joystick), mais aussi avec la PPU (Picture Processing Unit) qui est le co-processeur graphique de la NES, chargé de l'affichage des sprites et des arrière-plans, bref de tout ce qui concerne les graphismes.

- Emuler la PPU : là, je crois que c'est le gros du boulot. En effet, émuler la RAM revient à créer un bloc mémoire (fastoche en C++), ensuite tu y écris et y lis facilement avec de petites routines. Après, l'affichage est géré par un système de "tiles", qui sont des petites matrices 8x8 contenant un octet d'intensité et un de couleur si je dis pas de conneries (rien n'est moins sûr ^^).

L'affichage entier de l'écran est composé d'une matrice de tiles (donc une matrice de matrices). Après, connaissant le registre de la PPU, tu sais quoi envoyer au CPU ou quoi lire/écrire dans la RAM par exemple. Bref, c'est assez coton.

- Interface graphique sous Qt (à voir à la fin, une fois que tu as un programme qui tourne :P)

Bref, une fois les éléments séparés de la console émulés, il faut les faire communiquer entre eux... Et après c'est du bon normalement. Mais la NES possède une difficulté supplémentaire, à savoir les mappers de certaines cartouches, qui occasionnent des accès mémoire un peu exotiques. Puis la taille de la ROM aussi, qui varie et qui est donnée dans l'en-tête de la ROM (au format iNes). Enfin, la ROM est sous-divisée en une ROM CHR, contenant toutes les données graphiques, et en une ROM PRG, contenant les instructions CPU principalement.

Une adresse qui est une bible pour terminer :

http://nesdev.parodius.com/

Voilou ! :class: Si t'as d'autres questions je peux essayer de te répondre dans la limite de mes connaissances :D

PS : maître jeandubois, n'hésite pas à me fouetter si j'ai dit des conneries ! :P

Lien vers le commentaire
Partager sur d’autres sites

Merci pour les infos, je vais tester tout ça ^^

Pour info, c'est juste pour le fun que je test de faire un émulateur, je sais qu'il existe déjà de tres bons émulateurs NES mais c'est gratifiant de faire son propre émulateur (si ça marche :P ).

Allez au boulot <_<

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

Chargement
×
×
  • Créer...

Information importante

By using this site, you agree to our Conditions d’utilisation.