Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » [Prizm] - Interpréteur Chip8
Nemhardy Hors ligne Grand maître des Traits d'Esprit Points: 1242 Défis: 54 Message

[Prizm] - Interpréteur Chip8

Posté le 09/05/2014 19:17

Petit projet qui sera plutôt un projet à court terme, pas trop utile mais bon...

Hier, sur le chat j'avais évoqué "l'assembleur Chip8" sur HP-48 (une ancienne calculatrice), et je me suis souvenu d'un billet sur je ne sais plus quel blog qui évoquait cet assembleur en précisant que c'était une bonne base pour commencer à programmer quelque chose qui ressemblait à de l'émulation (techniquement, je me dis que c'est pas vraiment de l'émulation au sens premier du terme car c'est un langage interprété sur plusieurs types de machines, mais bon... ). J'ai donc commencé hier à programmer quelque chose qui serait capable de charger des programmes Chip8 et les exécuter sur la Prizm; c'était plus un défis personnel (je doute que beaucoup de gens ne s'amusent comme des fous avec un pong, quoique c'est plus intéressant qu'un plus ou moins de mon point de vue ) pour voir si j'étais capable de programmer efficacement uniquement à partir de doc plus ou moins technique (en fait, je n'ai utilisé que ce site).

Finalement, c'était plutôt rapide car j'ai quasiment fait que du debug aujourd'hui, le gros a été écrit hier, et ça commence à être jouable. En fait, certains jeux ont des comportement non-prévus de temps en temps (du style score qui s'incrémente à moitié par exemple), mais je continue de debug (c'est pas la chose la plus simple/rapide car je désassemble la ROM et suit le déroulement du programme instruction par instruction pour localiser les instructions qui posent problème et dans quelle(s) condition(s)).

Je met ici un build absolument pas définitif, mais utilisable. L'interface est austère inexistante (vous avez juste une sorte de console au début où vous devez écrire le nom de la ROM (e.g. pong.ch8) que vous aurez placé à la racine de la calto (sinon, vous pouvez taper le chemin folder\\pong.ch8 , mais la saisie n'est pas des plus pratique (et je viens de me rendre compte que l'antislash n'est pas accessible ... faut vraiment que je finisse mon fork de prizmio) ); pour quitter vous devez tapper "exit" puis appuyer sur [Menu](ou reset la calto ) et si jamais "help" vous redira en gros ce que je viens de dire). Une fois le nom tapé, le programme charge pendant quelques secondes et puis le jeu se lance. Les touches sont mal mappées (de 1 à 9 cela correspond au clavier normal 1->9, puis de A à F, c'est les touches F1 à F6), mais ça reste une version non définitive. Vous pouvez quitter en appuyant sur la touche [EXIT] puis [Menu]

L'interprétation n'est pas des plus rapide (mais égale la version Prizm déjà existante sur Cemetech), mais c'est un premier jet et j'ai plusieurs piste d'optimisation (notamment sur la gestion de l'affichage) ;).
Accessoirement, vous pouvez appuyer sur Shift ce qui fera passer le programme en mode debug, c'est à dire que cela ralentit le programme et affiche le "program-counter" (l'adresse de lecture actuelle des instructions) pour suivre l'évolution pas à pas de l'interprétation.

Enfin voila, je fais un premier commit sur un dépot git et je met le code online dans la soirée, ainsi qu'un ou deux screens (même si un pong c'est pas passionnant à voir) ;), en tout cas, c'est assez intéressant à faire, pas bien compliqué, mais ça me plaît bien, pourquoi pas envisager une fois que cela est fini (i.e. pas de suite), l'émulation de plateformes un peu plus intéressantes !

EDIT : Pitit(s) Screenshot(s)





Fichier joint


Lephenixnoir Hors ligne Administrateur Points: 24259 Défis: 170 Message

Citer : Posté le 18/01/2015 14:47 | #


Intelligide a écrit :
Lephenixnoir a écrit :
C'est bête que si peu de gens aient une Prizm (moi le premier à ne pas en faire partie), c'est un projet d'un grand intérêt...


T'as qu'a participer aux concours (bon laisse quand même un peu de chance aux autres )

Désolé, je peux pas arriver deuxième au concours

Sinon c'est « juste » un interpréteur de code Asm.
Mais au fait, il est compilé ou pas ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

Citer : Posté le 18/01/2015 15:14 | #


l'hexa est de l'asm compilé
In Arch, I trust ! And you ?
Nemhardy Hors ligne Grand maître des Traits d'Esprit Points: 1242 Défis: 54 Message

Citer : Posté le 18/01/2015 15:47 | #


Techniquement, c'est destiné à être interprété sur une machine virtuelle, du coup je ne sais pas trop si il faut le considérer comme compilé, vu que c'est écrit en "assembleur" puis assemblé, je ne connais pas le terminologie exacte ^^...
Lephenixnoir Hors ligne Administrateur Points: 24259 Défis: 170 Message

Citer : Posté le 18/01/2015 15:59 | #


-florian66- a écrit :
l'hexa est de l'asm compilé

Merci, mais tu m'avances pas là

Nemhardy a écrit :
Techniquement, c'est destiné à être interprété sur une machine virtuelle, du coup je ne sais pas trop si il faut le considérer comme compilé, vu que c'est écrit en "assembleur" puis assemblé, je ne connais pas le terminologie exacte ^^...

Ce que tu lis à l'exécution c'est compilé ou pas ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Cartix Hors ligne Membre Points: 2748 Défis: 98 Message

Citer : Posté le 18/01/2015 16:01 | #


Ouvre un fichier .ch8 et tu verras bien si tu as les instructions en texte
(Ok, je sors ... )
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 18/01/2015 16:02 | #


Si vous me dites que vous faites une compil JIT sur une calto...
-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

Citer : Posté le 18/01/2015 16:04 | #


ça marche

Je sais juste pas où sont toutes les fonctions pour faire quelque chose et dans quoi on l'écrit
In Arch, I trust ! And you ?
Nemhardy Hors ligne Grand maître des Traits d'Esprit Points: 1242 Défis: 54 Message

Citer : Posté le 18/01/2015 16:16 | #


Le but n'est pas tellement de permettre la programmation en chip8, car c'est pas la chose la plus agréable à faire ^^, mais surtout de permettre l'éxécution d'un certains nombre de jeux déjà existants (enfin c'était surtout par curiosité que j'ai fait ça car ça n'est pas la plateforme la plus amusante de monde non plus ).
Après, ça peut constituer une approche intéressante d'un truc qui pourrait ressembler de près ou de loin à de l'assembleur :).

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 v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 44 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