Avertissement : C'est une preuve de concept
FXGB est un portage d'un émulateur gameboy (regardez la source du fork pour l'émulateur original) pour la gamme des calculatrices casio FX.
Le programme tourne actuellement à ~ 4fps (~ 22fps overclocked max sur tetris) donc ce n'est pas vraiment utilisable.
Je l'ai fait surtout pour m'amuser, donc je ne pense pas que ça va être maintenu.
Caractéristiques actuelles:
* Il fait tourner des jeux (à un incroyablement rapide 4fps)
* Enregistrement et chargement des sauvegardes
* Je suppose que c'est plutôt cool?
* Ehhhh
Comment utiliser:
Mettez un rom gameboy sur la racine de la calculatrice avec un nom court de préférence. (Seulement testé avec Tetris et Super Mario Land)
Lancez le complément, puis entrez le nom du fichier ROM comme il le dit. Ensuite, appuyez sur n'importe quelle touche jusqu'à ce que vous atteigniez un écran avec 6 chiffres sur le côté.
Si vous êtes intéressé, le premier nombre est le fps, le second est le mode, les 2 suivants sont les décalages x et y et les 2 derniers sont la résolution x et y.
Les controles sont
MENU - Ouvrir le menu
SHIFT - A
ALPHA - B
OPTN - Sélectionnez
VARS - Début
F1 - Réglez le mode sur 0 (mode de lecture)
F2 - Réglez le mode sur 1 (mode de réglage du décalage)
F3 - Réglez le mode sur 2 (mode de réglage de mise à l'échelle)
F4 - Réinitialiser la mise à l'échelle et le décalage par défaut
F5 - Basculer l'affichage de débogage (numéro à gauche)
F6 - Activer/Désactiver le rendu de l'lcd
Les flèches contrôlent le jeu en mode 0, le décalage en mode 1 et la mise à l'échelle en mode 2
Avec la configuration par défaut max, F5 (x7.4 - 236MHz), j'ai des bugs au lancement de FXGB sur ma Graph 35+E.
Plusieurs touches ne réagissent pas, notamment OPTN pour changer la casse dans le nom de ROM que l'on saisit..
Avec la configuration par défaut F4 (x3.9 - 118MHz), pas de problème.
Mais il faudra quand même dans ce cas patienter 48 secondes sur un écran blanc après le "CPU OK" avant d'atteindre l'écran de titre du jeu.
Donc dans les 3 minutes si tu n'as pas overclocké je suppose.
Il serait sympa de bloquer les valeurs maximales pour le mode 3 (zoom).
L'affichage GB étant de 160x144pixels.
Je note qu'horizontalement, on peut dépasser 160, et à 162 ça glitche (offset horizontal qui tente de passer à moins l'infini, avec éventuellement un crash).
Comme la valeur se règle avec les flèches, il est hélas très facile de dépasser.
Ca y est !! x)
Je vois un piti Mario !
Mais c'est tout x)
En tout cas c'est un truc de malade de "faire tourner" des roms gameboy sur une calto ! GG a toi
Mais dis don, il y a eu de l'activité ici :P. Merci a tous le monde pour avoir tester FXGB. Pour l'overclocking, le clavier ne fonctionne plus avec une fréquence de 236Mhz avec gint je ne sais pas pourquoi. Le plus rapide que j'ai eu c'était avec le preset F4 et BFC et PFC a 117.96Mhz. Pour la GBC l'émulateur que j'utilise de base ne support pas la GBC et de toute façon, l'écran de la calto ne peut pas afficher les couleurs :P. J'ai essayer le moteur de gris mais j'ai abandonné en cours de route parce que réussire a faire tourner l'ému était déja assez compliqué. Pour les optimization, le plus gros problème maintenant c'est qu'il n'y a pas assez de ram pour avoir la rom entière en ram donc j'utilise un buffer qui accélère un peu tout mais c'est toujours lent. Si on pouvait mettre la rom en entier je pense qu'on aurait ~10fps overclocké stable mais je vais essayer de l'optimiser plus. Oh et une précision, l'émulateur que j'utilise n'a pas toutes les fonctions de la gameboy donc certains jeux auront des problèmes. Et je précise encore mais c'était juste un test pour m'amuser et non pas pour vraiment jouer avec :P. J'avais aussi pensé a ajouter le port link pour jouer avec plusieurs calto avec le port série mais je ne trouve pas comment utiliser le port série avec gint.
Pour l'overclocking, le clavier ne fonctionne plus avec une fréquence de 236Mhz avec gint je ne sais pas pourquoi.
Mais moi je sais. Le clavier a des délais de réponse. Sous SH3, c'est géré dans le driver du système par une attente sur le watchdog (et c'est quelque part dans gint), mais sous SH4, le watchdog ne possède pas de fonction timer. Je me suis débrouillé maladroitement avec des nop (une honte !). Le problème c'est que peu importe la méthode, ces délais sont si sensibles que n'importe quelle erreur fout la merde, surtout que j'ai pas masse doc dessus. L'overclocking en particulier ; je l'ai déjà expérimenté.
J'ai essayer le moteur de gris mais j'ai abandonné en cours de route parce que réussire a faire tourner l'ému était déja assez compliqué.
Normalement un coup de gray_start(), gray_stop() et utiliser les gfunction() au lieu des dfunction() suffit pour passer au gris. À moins que tu ne touches directement à la VRAM ?
Pour les optimization, le plus gros problème maintenant c'est qu'il n'y a pas assez de ram pour avoir la rom entière en ram
Petit secret : si tu es prêt à perdre la compatibilité SH3, il y a un buffer de 256 kio qui traîne sur SH4. C'est pile la taille de Penta Dragon ; je ne sais pas s'il y a des ROMs plus grosses ailleurs.
je ne trouve pas comment utiliser le port série avec gint.
Et pour cause, je n'ai pas implémenté de driver ! Je n'en suis pas encore là...
Involontairement peut-être, ton utilisation de gint me permet d'avoir des retours sur cette lib pas encore très utilisée. Alors merci ! o/
Pour le moteur gris, il est simple d'utlilisation et très bien mais je l'ai essayer une fois et il a pas fonctionné après 5minutes de bidouillage donc vu que je j'était sur FXGB depuis un certain temps j'ai perdu ma patience. Mais je pense que je peut le faire fonctionner facilement. Le buffer de 256Ko m'interesse beacoup, j'ai seulement besoin de 32k voir 64k max pour avoir un jeu jouable (a peu près) après le seul truc lent sera le switch des banks mais c'est pas très grave. Et pour le port série, j'avais essayer de faire un driver moi même avec le code source de gint et les syscalls mais j'avait pas réussit. Le port série m’intéresse beaucoup par contre (j'ai des idées avec des esp8266,internet, jeu multijoueur sans fils et d'autres trucs :P). J'aimerait bien utiliser gint partout mais j'ai quelque problèmes, entre autre le port série et la fonction sqrt() qui n'est pas implémenté (pour un raycaster type wolfenstein qui tourne deja bien sur le sdk). Bref merci pour le retour :D.
Les jeux font des switch de banks très souvent, il serait mieux de mettre en cache dans la mémoire vive le plus de banques possible.
Après, j'ai fait des tests, et la base de code (l'émulateur sur lequel tu t'es basé) n'est pas optimal du tout, même sur mon ordinateur Pokémon Rouge peine à atteindre le full speed, et Tetris ne dépasse pas les 90FPS.
Je sais que tu as dit que c'était pour tester et pas un projet sérieux, mais je pense vraiment qu'il serait intéressant de le continuer
PS : Si tu veux, tu peux passer sur la shoutbox du site
Eh bien si ma mémoire est bonne c'est à 0x88040000. Si tu veux faire des choses compliquées avec, tu veux peut-être implémenter un allocateur dynamique.
Et pour le port série, j'avais essayer de faire un driver moi même avec le code source de gint et les syscalls mais j'avait pas réussit.
Hmm, tu ne peux pas faire ça avec des syscalls. Il faut étendre le gestionnaire d'interruptions, et le système ne peut pas aider. La version actuelle de gint s'y prête mal, mais la prochaine version (que je suis en train d'écrire en local) rendra ça plus simple.
J'aimerait bien utiliser gint partout mais j'ai quelque problèmes, entre autre le port série et la fonction sqrt() qui n'est pas implémenté (pour un raycaster type wolfenstein qui tourne deja bien sur le sdk).
En fait toute la libmath n'est pas implémentée... c'est l'un des plus gros trous de la lib actuellement. Ça prendra un peu de temps à régler, mais je suis pas expert pour cette partie. Ces fonctions restent pour beaucoup des mystères pour moi...
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