Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » [C/gint] Emulateur chip8
Hackcell Hors ligne Membre Points: 1413 Défis: 11 Message

[C/gint] Emulateur chip8

Posté le 17/02/2020 18:18

Donc comme dis lors de la derniére réunion PC, je travaille depuis un peu plus d'un mois sur un emulateur bas-niveau chip8.

depot gitea


Avancement

Instruction
   95%

Toutes les instruction sont implementé, reste du peaufinage sur les instruction utilisant getkey

Systeme
   50%

Le systeme est presque fonctionel, manque seulement les timers.

Option
   1%

J'aimerais rendre deux trois trucs paramétrable pour des raisons de compatibilité.

Outils
   1%

J'aimerais également implementer des saves-states et du backtracking.

Interface
   1%

Pour l'instant l'interface de selection des ROMs se résume entrer le nom de cette derniéres dans les sources, mais pour la finir il me fait convertir des chaines FONTCHARACTER vers de l'ascii ou autre.

Notes sur la compilation

Pour l'instant, j'utilise une version custom de gint avec plus de syscall, que vous pouver trouver içi
Avec de la chances, vous pourrez bientôt utiliser la version classique (si j'ai bien codé).


Votre rôle

Maintenant que c'est à peu prés utilisable, j'aurais besoin de votre aide pour trouver des bug/incompatibilité en testant avec plein de ROMs differentes

ps: en piece jointe la ROM que j'utilise pour mes test.

Fichier joint


Lephenixnoir Hors ligne Administrateur Points: 21010 Défis: 143 Message

Citer : Posté le 17/02/2020 21:22 | #


Hmm, pas mal ! J'ai testé par rapport aux versions que je trouvais en ligne (rappelle les contrôles sinon c'est galère xD). Tu vas à quelle vitesse en termes d'instructions/s par exemple ?

Pour la compatibilité, je me souviens qu'il y a des comportements spéciaux sur les shifts nécessaires pour faire marcher certains jeux...
Hackcell Hors ligne Membre Points: 1413 Défis: 11 Message

Citer : Posté le 17/02/2020 22:12 | #


aucune idée, j'ai pas encore implementer les timers

Je ferais un README demain pour les controles

pour la compatibilité, pour faire simple, c'est compliqué, parceque les specification sont pas unique, du à certain trucs non définit et donc interpreter differament d'une implementation à une autre… (coucou MD, coucou AP)
Milang Hors ligne Membre Points: 488 Défis: 2 Message

Citer : Posté le 18/02/2020 10:55 | #


Bon, j'ai fait un test, et un benchmark

Bon, pour les contrôles, effectivement c'est compliqué sans le savoir, et j'ai regardé le code, mais je n'ai pas compris

Mais du coup j'en ai quand même profité pour faire un benchmark avec la libprof sur une rom de pong (il y avait une boucle infinie donc c'était plus simple pour moi ). J'ai donc fait le benchmark avec le modèle suivant:
Modèle: Graph 35+E SH4 (upgradée en 75+E)
OS: 2.05.2201

Dans les différents tests que j'ai fait, seul le temps d’exécution de la fonction execute() est mesuré, tout le code additionnel exécute n'est pas comptabilisé. (Chaque vitesse obtenue est calculée à partir de la durée de 256 instructions)

Avec les paramètres de vitesse de processeur originaux, la libprof renvoie le temps mesuré suivant:
4074 microsecondes en moyenne par instruction, soit 1 000 000 / 4 074 = 245.45 instructions par seconde

Maintenant, avec ftune, en poussant le cpu à 235.93 MHz, on descend jusqu'à...
707 microsecondes en moyenne par instruction, soit 1 000 000 / 707 = 1414.43 instructions par seconde

Voila ce que ça donne en matière de vitesse d'exécution, je laisse les sources, et la rom utilisée ici, https://gitea.planet-casio.com/Milang/chip8-benchmark, comme ça vous pourrez vérifier si mon benchmark est correct. (J'ai seulement modifié project.cfg pour y ajouter la libprof, j'ai joint la ROM et le code modifié se situe dans src/main.c)

D'ailleurs, je confirme que ça marche avec la version classique de gint
Ah et un dernier truc aussi, si on pouvait quitter le programme sans faire de reset, ça serait mieux
Hackcell Hors ligne Membre Points: 1413 Défis: 11 Message

Citer : Posté le 18/02/2020 11:01 | #


merci pour les test~ ♥
Lephenixnoir Hors ligne Administrateur Points: 21010 Défis: 143 Message

Citer : Posté le 18/02/2020 11:19 | #


Intéressant ! Ça c'est du test poussé, merci Milang.

Donc 250 instructions par seconde... c'est pas mal du tout (même si on peut certainement faire plus rapide).
Hackcell Hors ligne Membre Points: 1413 Défis: 11 Message

Citer : Posté le 18/02/2020 12:24 | #


disons que j'utilise déjà pas mal de trick pour rendre le tout plus rapide… mais probablement

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2021 | Il y a 83 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd