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.
Menu
Calculatrices
Graph 35 à 100
Graph 25+Pro/25+E/25+E II
Graph 35+USB/75(+E)/85/95 SD
Graph 100(+)
Classpad 300/330(+)
fx-CG 10/20 (Prizm)
Classpad 400(+E)
Graph 90+E
fx-92+ SC
Liens
¤ Transférer un programme sur
sa calculatrice

¤ Vous cherchez une fonction ?
Utilitaires >> Graph 35+USB/75(+E)/85/95 SD >> Add-ins >> FXGB
FXGB
Version : 1.1 Taille : 65612 octets Ajouté le : 2017-12-06 17:54 Modifié le : 2020-09-19 11:49
Auteur et posteur :
DjpadbitHors ligneMembrePoints: 121 Défis: 0 Message
Planète Casio - Add-in Casio - FXGB - djpadbit - Calculatrices
Nombre de visites sur cette page : 13349
Score au progrank : 35
Pas encore de note !
Vous devez être connecté(e) pour noter (inscription).
1228 téléchargements | Soumettre un test


A cause du changement de processeur des nouvelles Graph 35+ USB, 75 et 95 SD, de nombreux addins sont incompatibles avec ces calculatrices.
Rendre un addin compatible - Plus d'informations sur ce problème - Liste des addins compatibles

Description :

CET ADDIN N'EST PLUS MAINTENU, VOIR FXGNUBOY

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.

Fun fact: c'est mon premier add-in avec gint.

Vous pouvez trouver la source sur mon github à: https://github.com/djpadbit/gameboy

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


Commentaires :

Pages: 1, 2, 3, 4, 5, 6, 7, 8, 9 | Suivante

OVERClock
Statut : Invité
Posté le 28-01-2018 à 23:34 | #
Salut !
J’ai essayé ton prg avec SuperMario Land et Zelda, deux fichiers .gb
Je rentre leur noms, ROM ok ! Mem ok ! CPU ok !
Mais apres j’arrive sur l’écran avec les 6 chiffres, 5fps, les reglages x et y par defaut, mais rien ne se passe : écran vide
J’ai essayé de modifier le décalage mais ça ne change rien
Vous auriez une idée ?
Julese50Hors ligneGourouPoints: 315 Défis: 16 Message
Posté le 29-01-2018 à 00:04 | #
Salut !

J'ai quelques idées pour optimiser le code, si ça t'intéresse (en vrai c'est probablement le code du GPU qui est le plus lent, mais c'est à voir)

CPU :
- Mettre les flags dans des booléens à part, parce qu'ils sont beaucoup plus souvent utilisés comme flags que comme registre F
- Utiliser un tableau de pointeurs sur fonctions pour les opcodes, au lieu des différents switchs que tu utilise (un seul switch pourrait être optimisé en tableau, mais plusieurs, c'est plus chaud pour le compilateur)
- Utiliser des unions anonymes pour pouvoir adresser BC au même titre que B ou C, sans avoir besoin de faire des shifts et OR pour accéder à chaque registre 16bit.
- Y a aussi moyen de faire des grosses optis mais vachement plus complexes (du genre waitloop detection, ou éventuellement refaire tout le core CPU avec de la JIT, mais au début pas sûr que ça soit beaucoup plus rapide qu'un interpréteur bien opti)

Mémoire en général :
- Quand tu sais dans quel mémoire tu veux lire, lire directement l'array correspondant au lieu d'utiliser la fonction mem_get_raw (je pense particulièrement au GPU qui lit toujours la VRAM pour ses données, donc autant lire direct là)

Timer :
- C'est pas un problème d'optimisation, mais surtout d'accuracy là. Le timer DIV de la Gameboy est en réalité un timer 16bit, incrémenté de 1 à chaque cycle du CPU. Quand on lit le register DIV (FF04), on lit les 8bit les plus élevés. Quand on écrit sur DIV, les 16bit sont mis à zéro. Les 16bit sont utilisés (avec un falling edge detector) pour mettre à jour TIMA, en utilisant un masque différent selon la vitesse. Écrire sur DIV influence donc TIMA (mais ne remet pas TIMA à zéro, il influence juste son incrément). Tu trouvera plus d'informations ici : https://github.com/AntonioND/giibiiadvance/blob/master/docs/TCAGBD.pdf

Pour l'instant je n'ai pas encore testé l'émulateur par contre, problème de compilo. Mais très bon projet en tout cas, je t'encourage à continuer !

Edit : Autre opti pour le CPU, pour les rotates écris les directement (c.B << 1) | (c.B >> 7), le compilateur pourra optimiser ça en rotate directement normalement, et s'il le fait c'est quand même bien plus rapide quoi (s'il ne le fait pas, regarde l'assembleur SuperH et écris certaines petites parties avec, pour être sûr·e de tirer profit du processeur cible)
LephenixnoirHors ligneAdministrateurPoints: 24120 Défis: 170 Message
Posté le 29-01-2018 à 07:37 | #
Aah, je comprends pourquoi c'est pas rapide. Tu l'as forké d'un émulateur réel (d'où une réimplémentation partielle de la SDL) !

Super boulot. Je suis heureux que gint serve à faire des POC comme ça.

D'ailleurs, puisqu'on n'est plus à 1 FPS près (encore que 1 sur 2... ), tu as essayé d'antialiaser avec le moteur de gris ? J'en ai vu des traces dans le code, mais commentées.

Je l'ai testé sur Penta Dragon mais sans trop de succès (un écran noir pendant quelques secondes, puis un écran blanc). Peux-tu citer des ROMs sur lesquelles le programme a marché ?
Dark stormHors ligneLabélisateurPoints: 11629 Défis: 176 Message
Posté le 29-01-2018 à 16:37 | #
Seulement testé avec Tetris et Super Mario Land

Je pense que ça répond à la question
OVERClock
Statut : Invité
Posté le 29-01-2018 à 16:40 | #
J'ai essayé avec SuperMario Land, mais écran blanc...
Au cas ou la Rom aurait pu être défectueuse, j'ai essayé avec d'autres, mais le même résultat...
CritorHors ligneAdministrateurPoints: 2567 Défis: 18 Message
Posté le 29-01-2018 à 17:07 | #
Très impressionnant.

Déjà, la photo qui montre que ça marche, c'est quel jeu ?

Les ROMs Game Boy Color sont censées passer ou pas ?
LephenixnoirHors ligneAdministrateurPoints: 24120 Défis: 170 Message
Posté le 29-01-2018 à 17:11 | #
Ça ressemble fort à l'écran d'accueil de Tetris avec le Kremlin, je me trompe ?


Julese50Hors ligneGourouPoints: 315 Défis: 16 Message
Posté le 29-01-2018 à 17:17 | #
Critor : De ce que j'ai vu dans le code, aucune feature de la CGB n'est supporté, donc non (et puis, on peut douter de l'intêret vu l'écran de la Casio)
CritorHors ligneAdministrateurPoints: 2567 Défis: 18 Message
Posté le 29-01-2018 à 17:27 | #
@Julese50
Merci.
Je pensais que peut-être ça aurait pu convertir en niveau de gris, le processeur étant de toutes façons le même.

@Lephenixnoir
Merci également pour ta réponse. Effectivement, avec un peu d'imagination...
CritorHors ligneAdministrateurPoints: 2567 Défis: 18 Message
Posté le 29-01-2018 à 17:30 | #
Euh non, suis pas idiot à ce point-là quand-même.

Je parlais de la Game Boy monochrome et de la Game Boy Color.

Pages: 1, 2, 3, 4, 5, 6, 7, 8, 9 | Suivante

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 47 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