IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement 2D, 3D et Jeux Discussion :

Programmer un émulateur : exemples avec quelques instructions


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 826
    Points : 218 287
    Points
    218 287
    Billets dans le blog
    117
    Par défaut Programmer un émulateur : exemples avec quelques instructions
    Bonjour à tous,

    Voici le cinquième tutoriel de la série dont le but est de vous apprendre à programmer un émulateur Chip 8 !
    Ce cinquième chapitre explique comment implémenter quelques instructions du processeur de la Chip 8. À la fin de ce tutoriel, votre émulateur sera capable d'afficher ses premières images.

    N'hésitez pas à surveiller le sommaire qui sera mis à jour au fur et à mesure.

    Bonne lecture.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 072
    Points : 7 974
    Points
    7 974
    Par défaut
    C'est vraiment pas mal comme article, ca m'a beaucoup plut.

    J'ai essayé de porter le code en java, mais j'ai tellement eu de problème a convertir les types de données que je crois que je vais abandonner ^^.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2005
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Philippines

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2005
    Messages : 244
    Points : 609
    Points
    609
    Par défaut
    Bravo! C'est un superbe projet !

  4. #4
    Membre à l'essai
    Homme Profil pro
    ...
    Inscrit en
    Juillet 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : ...

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14
    Points : 19
    Points
    19
    Par défaut
    Salut !

    Pas mal du tout cet article. J'ai longtemps cherché et je n'ai rien trouvé d'aussi détaillés et surtout en Français... Bravo !!!

    En C# et en seulement trois jours je trouve avoir beaucoup avancé mon projet et je suis plein d'idée


    Tout petit bémol cependant, le lien de la rom BC_Chip8Test est mort !

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 826
    Points : 218 287
    Points
    218 287
    Billets dans le blog
    117
    Par défaut
    Eh bien, bonne nouvelle ! La rom BC_ChipTest8 est à nouveau en ligne
    Amusez vous bien avec.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Membre à l'essai
    Homme Profil pro
    ...
    Inscrit en
    Juillet 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : ...

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14
    Points : 19
    Points
    19
    Par défaut
    Super merci


    Piouffffffff, j'ai enfin bouclé le tuto et je vous re-félicite pour sa qualité !!!

    J'ai toutefois encore quelques bugs, par exemple : lorsqu'une partie est terminée
    mon programme boucle sur l'OpCode n°3 O_o. Même problème avec la rom "BC_test.ch8"
    qui affiche "BON By BestCoder." puis boucle sur l'OpCode n°3.


    Voici le lien du premier jet de mon émulateur si vous voulez faire le test.
    Baptiser Doallator => http://doallator.free.fr

  7. #7
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 072
    Points : 7 974
    Points
    7 974
    Par défaut
    @chopin : C'est quoi ce "rafraichissement des collusion" ? :p
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre à l'essai
    Homme Profil pro
    ...
    Inscrit en
    Juillet 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : ...

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14
    Points : 19
    Points
    19
    Par défaut
    Disons que je me suis un peu torturé l'esprit pour supprimer les scintillements des sprites
    en mouvement et je n'ai rien trouvé de mieux que de jouer avec l'update.screen/collusions.

    S'il y a une méthode plus efficace, je suis preneur

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour tout le monde, et bonnes fêtes aussi

    Je refais une apparition pour faire remonter une autre erreur (qui est peut être moins petite cette fois-ci si je ne me trompe pas), dans le fichier cpu.c une fonction initialiserJump() est appelée, celle-ci a bien son prototype dans le cpu.h tout va bien, mais problème : cette fonction n'est pas codée.

    En espérant ne pas me tromper ^^

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 1
    Points : 2
    Points
    2
    Par défaut Erreur d'affichage des couleurs.
    Bonjour,
    Ça fait un moment déjà que je suis ce tuto avec assiduité. Et j'ai remarqué un gros problème qui me bloque dans la compréhension et la logique qu'il a employé. En effet, une fois les codes compilés et exécutés, il ne s'affiche qu'une image noire. Image noire dû notamment à la fonction dessinerpixel() qui ne peut afficher autre chose que le noir car la valeur "pixel.color" ne change jamais. Serait ce donc une erreur volontaire pour empêcher tout test du code proposé ou un simple oubli ? Je devrais alors m'interroger sur la fiabilité du tuto et donc du code proposé. C'est très frustrant pour moi car je ne peux voir si les roms s'affichent correctement. Je vous en serai extrêmement reconnaissant si vous corrigé ce problème .

    Merci d'avance

  11. #11
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 826
    Points : 218 287
    Points
    218 287
    Billets dans le blog
    117
    Par défaut
    Bonjour,

    En effet, je n'ai que du noir. Toutefois, votre diagnostique n'est pas correct, la couleur du pixel est déterminée par dessinerEcran() (dans cpu.c). Par contre, moi, le programme n'y va jamais. Il faut que je fasse plus de débogue pour voir pourquoi.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  12. #12
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 215
    Points : 10 140
    Points
    10 140
    Par défaut
    En faite je n'ai pas lu le tuto , mais si tu veux faire un émulateur la première chose a faire est d'émuler le processeur (le plus facile a mon sens).

    Il y'a une façon d'émuler un processeur un peu lonng mais qui permet d'avoir la main sur la 'machine' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    while(boucle)
    {
          recup_io =instruction_cpu(); //on exécute une instruction a la fois
          dma(recup_io);
          joypad(recup_io);
          affichage(recup_io);
          //etc
    }
    Bien sur c'est une approche simpliste , il y'a quand même quelque code a rajouter comme la vérification de la memory map au cas ou (qui est un gros tableau).
    La vérification de l'écriture/lecture aussi de la memory map.

    Ensuite il faut juste bien programmer les IO pour avoir son émulateur un peu fidel a a la machine cible

    L"émulateur MAME change le CPU , affichage , son , en fonction de la machine cible

Discussions similaires

  1. Recherche de programmes exemples avec source
    Par bubarnet dans le forum C#
    Réponses: 4
    Dernier message: 15/07/2014, 05h04
  2. Programmer un émulateur : simuler des instructions
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 3
    Dernier message: 29/03/2014, 10h24
  3. Exemple de programme simple de dessin avec QT4
    Par kimlee dans le forum Débuter
    Réponses: 2
    Dernier message: 27/10/2008, 21h59
  4. Réponses: 6
    Dernier message: 12/01/2008, 21h56
  5. Problème avec quelques programmes
    Par KHEOPS1982 dans le forum Windows XP
    Réponses: 4
    Dernier message: 27/06/2007, 20h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo