Posté le 15/11/2020 11:08
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 127 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
Citer : Posté le 15/11/2020 11:20 | #
Un poil de contexte d'abord : créer ou porter un émulateur est difficile. On attend donc que quelqu'un qui s'y attaque maîtrise ses outils et puisse se documenter. Donc généralement tu auras des grandes idées et de la doc mais personne n'ira te proposer un tutoriel ou du code tous prêts : parce que si tu en as besoin, c'est que tu n'es pas prêt à te lancer là-dedans.
D'abord tu dois choisir une plateforme à émuler. Une connaissance générale du matériel à émuler et du matériel dont tu disposes (la calculatrice) est indispensable pour éviter de te lancer dans un truc impossible (eg. émuler une PSP sur une Graph 35+E II).
Ensuite tu dois étudier la liste des parties matérielles et périphériques que tu dois émuler. Souvent il y a plein de subtilités, et tu voudras commencer par une partie réduite qui supporte un ensemble minimal d'applications à tester. Dans le même temps tu planifies comment coder ça. Si tu dois émuler un processeur alors les performances de cette partie seront cruciales donc retournes-y deux ou trois fois.
Puis tu le codes. Prévoir un protocole de test incrémental détaillé. Pour les consoles cherche des ROMs homebrew qui testent les fonctionnalités du processeur avant de lancer une application graphique complète. Prévois beaucoup de debug et selon la plateforme choisie probablement des mois de développement.
À toutes les étapes tu auras besoin de documentation détaillée de la plateforme à émuler, par exemple Emu-Docs, dont l'information est toujours pertinente même si le projet semble un peu mort désormais.
Citer : Posté le 15/11/2020 11:34 | #
voici une personne qui fais un émulateur nes
https://www.youtube.com/watch?v=F8kx56OZQhg&t=884s
pour montrer a quel point c'est dur et long
Citer : Posté le 15/11/2020 11:45 | #
En fait ce que je comprends pas c'est que si :
-j'utilise un truc ou je programme un truc pour transformer un(e ?) ROM en code, à ce moment là si le code est en C j'ai juste à le lancer sur la calto sinon je le convertis en C
Ca va donner quoi ?
Ajouté le 15/11/2020 à 11:45 :
(Je sais c'est probablement ultra naif)
Citer : Posté le 15/11/2020 12:02 | #
Le plus simple en terme d'emulateurs c'est d'émuler (copier) le fonctionnement d'un processeur.
Je te conseille de regarder un tuto sur les émulateurs chip 8 , tu verras que c'est très simple
Passé ici il y a peu. ಥ‿ಥ
Jouez à Mario sans arrêt sur votre Casio !
City Heroes
Piano Casio
Micro GIMP
Citer : Posté le 15/11/2020 12:02 | #
C'est pas entièrement stupide (t'a une bonne idée de recompilation derrière) mais oui c'est très naïf. Ta ROM c'est du code assembleur pour la plateforme en question. Non seulement cette étape de décomrfpilation n'est pas triviale mais en plus derrière la façade de "c'est du C" tu élimines complètement l'interface matérielle. La ROM va contenir des instructions comme "lance le timer" et c'est pas en "transformant" en C que tu vas éliminer ça. Tu dois bel et bien émuler tous les périphériques, et même si pour le CPU tu recompiles (ce qui est tout sauf idiot) ça ne te sauvera pas.
Citer : Posté le 15/11/2020 12:03 | #
Il y en a dans tous les langages , C , Python et même HTML+JS
(Pour l'exemple du chip 8)
Passé ici il y a peu. ಥ‿ಥ
Jouez à Mario sans arrêt sur votre Casio !
City Heroes
Piano Casio
Micro GIMP
Citer : Posté le 15/11/2020 12:12 | #
Ta ROM c'est du code assembleur pour la plateforme en question.
Mais du coup , il y a juste a executer l'assembleur non ?
Citer : Posté le 15/11/2020 12:13 | #
L'exécuter avec quoi ?
Citer : Posté le 15/11/2020 12:57 | #
Avec un compilateur d'assembleur ?
Ajouté le 15/11/2020 à 13:04 :
Pour moi compiler un code C c'est :
1)le transformer en language bas niveau genre assembleur
2)puis transformer l'assembleur en code machine
3)et enfin executer le code machine
Donc pas besoin de faire l'etape 1 puisque c'est déjà en assembleur
Donc en gros il faudrait faire un genre de GCC pour sans l'étape 1
Je dois dire des conneries ...
Ajouté le 15/11/2020 à 13:06 :
*"sans" pas "pour sans"
Citer : Posté le 15/11/2020 13:27 | #
Tu sembles oublier un détail important sur l'assembleur : l'architecture. L'assembleur n'est pas un langage comme le C, c'est presque juste un concept. Chaque processeur a son propre langage. Au début de l'informatique ils étaient tous différents. Du code écrit pour un processeur devait être réécrit pour marcher sur un autre. Avec le temps les gens ont bien compris que c'était mieux d'éviter ça et les architectures sont apparues. Tu peux voir ça comme un « modèle » de sémantique pour le processeur : deux processeurs de la même architecture ont un fonctionnement similaire (du point de vue du programmeur au moins) et utilisent un langage commun, qu'on appelle assembleur.
En bref : il n'y pas « l'assembleur », il y a « un langage assembleur par famille de processeur ».
Donc non le code assembleur ARM que tu trouves dans une ROM Game Boy Advance ne peut pas être exécuté sur le processeur SuperH de la calculatrice. Et c'est le truc #1 que tu dois regarder si tu veux faire un émulateur : quelle architecture ?
Et pas de bol, le code assembleur ce n'est pas comme du pseudo-code ou du C : tu ne peux pas le compiler ou le "transformer" comme ça. Quand tu vas désassembler du code SuperH tu vas croiser un moment où on charge une adresse dans le registre GBR et ensuite on s'en sert pour accéder à des structures dans la RAM. Sauf que ARM n'a pas de registre GBR, donc tu ne risques pas de trouver une instruction équivalente. Tu es obligé de trouver une autre façon de reproduire le même effet mais en ARM, autrement dit... d'émuler la fonctionnalité.
(Cet exemple montre que recompiler du SuperH vers du ARM serait difficile, et bien sûr ça marche aussi dans l'autre sens. Mais je connais moins ARM donc je prends des exemples que je maîtrise mieux.)
Et pas de bol encore, le code assembleur fait référence à plein de trucs spécifiques à la machine. Sur la calculatrice il y a des registres mappés en mémoire, si bien que si tu écris à l'adresse 0xb4000000 ça envoie des informations à l'écran. Là c'est même pas la peine d'espérer que tu peux prendre un autre objet (genre une Game Boy ou un ordinateur) et espérer qu'il y a un écran derrière l'adresse 0xb4000000 (sur une Game Boy cette adresse n'existe même pas). Tu es obligé de reproduire le fonctionnement et le protocole de l'écran... autrement dit d'émuler le périphérique.
Et si tu te demandes, non, il est impossible (et ça c'est un bon gros impossible de théoricien, ni rien ni personne ne le peut) de décider si oui ou non un programme accède à l'adresse 0xb4000000 et si oui à quel moment.
Citer : Posté le 15/11/2020 15:25 | #
Bon, en gros , RIP Mario Kart
Plus serieusement, merci beaucoup d'avoir pris du temps à me répondre, surtout que je connais pas grand chose donc je dois être chiant (c.f mon age )
Citer : Posté le 15/11/2020 20:18 | #
Ça dépend de quelle version de Mario Kart je suppose (?) mais oui comme tu peux le voir c'est compliqué. La calculatrice (même la Graph 90+E) n'est pas si puissante que ça donc il faut y aller prudemment.