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 » Un émulateur gbc sur casio ?
Pkplomb Hors ligne Membre Points: 87 Défis: 0 Message

Un émulateur gbc sur casio ?

Posté le 17/03/2013 09:55

Salut tous le monde
Pour mon prochain projet j'aimerais me lancer dans un émulateur de game boy color sur casio

Mais je ne suis pas sur que les calc soit assez puissante pour ce genre d'application

Si vous avez des sources sur les gbc je suis preneur


Hackcell Hors ligne Maître du Puzzle Points: 1532 Défis: 11 Message

Citer : Posté le 27/08/2016 19:14 | #


Ça fait quand même vachement limité pour l'écran
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 27/08/2016 19:22 | #


En plus on peut même pas réduire vu que le ratio est pas du tout le même


Donc ce projet n'est pas possible vu qu'il faudrait recoder tous les jeux pour qu'ils tiennent sur 64*128.
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Julese50 Hors ligne Gourou Points: 315 Défis: 16 Message

Citer : Posté le 27/08/2016 19:27 | #


Après c'est pas vraiment un problème de ratio, si l'écran de la Casio faisait 71*64, ça serait pas possible non plus … x)
Lephenixnoir En ligne Administrateur Points: 24678 Défis: 170 Message

Citer : Posté le 27/08/2016 19:47 | #


D'après ce que je vois, tout est possible excepté les problèmes liés à l'écran. On peut bien penser à utiliser des touches pour déplacer la partie visible mais c'est malaisé. Au mieux, un réglage centré.

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Alex BasicC Hors ligne Ancien modérateur Points: 1734 Défis: 83 Message

Citer : Posté le 28/08/2016 09:47 | #


Après, la prizm a un écran suffisamment grands, un processeur suffisant, mais seulement 2Mo de ram au lieu de 8
edit : Je suis, stupide, c'est 8ko pour la gbc, pas 8Mo( donc tout va bien )
Lephenixnoir En ligne Administrateur Points: 24678 Défis: 170 Message

Citer : Posté le 28/08/2016 10:30 | #


D'après Gollum c'est 8 ko de RAM je pense, pas 8 Mo.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Alex BasicC Hors ligne Ancien modérateur Points: 1734 Défis: 83 Message

Citer : Posté le 28/08/2016 10:54 | #


En effet, je ne sais donc pas lire..., un emulateur gbc sur prizm serait donc possible
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 28/08/2016 12:03 | #


La différence, c'est que graphiquement la Prizm est lente. Très lente. Trop lente. Ou alors il faut refaire un gint spécial prizm, mais là on est pas sorti de l'auberge…
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 24678 Défis: 170 Message

Citer : Posté le 28/08/2016 12:06 | #


Techniquement il y a assez peu de différences à prendre en compte. La grande majorité de gint doit être compatible. Voilà une liste quasi-exhaustive pour appuyer mon propos...
- Driver du clavier (le principe doit être le même, si les touches sont identiques ça pourrait fonctionner tout seul)
- Driver de l'écran (celui qui prend 10 lignes pour la fx-9860G...)
- Moteur de gris (...)
- Ah oui, et le dessin. Mais c'est pas un très grosse affaire (beaucoup de code mais aucune difficulté)
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 28/08/2016 12:19 | #


Essaie déjà de finir gint sur G75 et on en reparle
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Nemhardy Hors ligne Grand maître des Traits d'Esprit Points: 1243 Défis: 54 Message

Citer : Posté le 28/08/2016 12:34 | #


Un des problèmes "bloquant" au niveau graphique, c'est vraiment la quantité de données à transférer à chaque mise à jour de l'écran, et là je ne suis pas sûr qu'on puisse faire grand chose ; déjà qu'on laisse la charge du transfert à une unité spécialisée sur laquelle on a pas vraiment le contrôle (je veux dire on lui file les adresses, et on lui dit de commencer et c'est elle qui fait le transfert, sans qu'on ait à gérer de boucle de copie ou autre, ce qui décharge le processeur qui a priori serait moins performant pour cette tâche). On a quand même 165ko à transférer de la VRAM à l'écran à chaque frame, et là je ne pense pas qu'on puisse vraiment faire grand chose, gint ou non, puisqu'on "délègue" le transfert…

Et surtout je ne suis pas sûr que porter gint soit vraiment intéressant : on a déjà du gris à la pelle si on veut, on a de quoi utiliser le clavier de toute les Prizms sans disjonction pour l'instant, les routines de dessins sont quand même assez différentes, puisqu'en aucun cas on a de décalage de bits à gérer, on remplit juste des shorts, voire des longs si l'adresse est correctement alignable, et je ne sais pas si on peut vraiment gagner là aussi.
(À part bien entendu l'idée de libérer un maximum de fonctionnalités, mais il faut savoir qu'un gestionnaire d'interruption avait été commencé côté anglophone, mais l'auteur a rapidement briqué sa calto pendant le développement, les Prizm étant plus sensibles à ce genre de problème manifestement…)

Après y'a des moyens de partiellement contourner ça : j'avais tenté le coup du triple buffering, ça se fait et donne des résultats intéressants, mais j'avais pas réussi à faire quelque chose de propre… (Autrement dit j'hardocodais l'adresse du troisième buffer dans une zone que j'espérais ne pas atteindre lors de l'exécution du programme, sauf que c'était pas du tout exclu vu que c'était une zone dans la stack, et qui en représentait quand même ~30% :E, enfin c'était juste du "proof of concept" bancal quoi, et j'ai jamais réussi à gérer la zone proprement… :-/ ). Je ne sais pas à combien de fps tournait la GBC, mais un triple buffering pourrait permettre de gérer correctement l'émulation en se libérant un peu de ces temps de transfert graphiques, en partie seulement évidemment !
Sinon, l'écran de la GBC est également plus petit que celui de la Prizm, ça peut permettre de raffraichir seulement une partie de l'écran, ce qui, si bien géré, permet effectivement de gagner du fps (notre projet avec TheProg pour le concours de l'été y'a deux ans tournait sans overclock à 25 fps tranquillement comme ça).

Mais en fait la "lenteur" graphique est vraiment liée à la quantité de données à écrire puis transférer, et je ne sais pas si un projet du type de gint y pourrait vraiment quelque chose (après je ne sais pas vraiment comment il fonctionne en interne, donc je n'exclue rien non plus ! ).
Lephenixnoir En ligne Administrateur Points: 24678 Défis: 170 Message

Citer : Posté le 28/08/2016 13:20 | #


L'intérêt de gint serait, par exemple, l'accès aux timers du proco. Le contrôle sur le matériel est plus fin, on peut accéder tranquillement à des pins, le port série, etc.

Maintenant avec Darks on avait trouvé la doc de l'écran et ça vaut peut-être le coup d'y jeter un oeil. Je doute que ce soit réellement plus rapide, mais avec la G85 on est malheureusement limité par le bus qui nous impose 1 octet à chaque transfert.

Pour la Prizm, un accès direct à l'écran peut peut-être débloquer un paramétrage qui réduirait la taille des données quitte à perdre les 65'000 couleurs.

Si tu parles de AHelper, il avait fait plus que ça pour briquer sa calto : il avait touché le MMU dans une tentative de linker dynamiquement des libs. J'ai soigneusement évité tout modification de MMU pour éviter ce type de problème sur G85.

Tout ça reste fortement hypothétique, et puis j'en parle que pour alimenter la réflexion. (Comprenez, il y a déjà beaucoup de boulot sur G85).
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)

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 132 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