Manuels | TOP 20 | Labels PC | Conversion | Graphisme | Organiseurs | Divers | Add-ins | MLC | LuaFX |
Calculatrices
Graph 35 à 100 (CFX)
Graph 25/25+ (Pro) (fx-7400)
Graph 75/85/95 (SD) (fx-9860)
Graph 100/100+ (AFX)
ClassPad 300/330
Fx-CG 10/20
Fx-CP 400
Graph 90+E

Retour aux miniatures
Tri avancé
Liste des programmes
Nom Date
FXGB
SerialMo
GUMP
Game Of Life
Omgclock
Help
Eigenmath
Clavier virtuel
DPicoC
WebCalc
Serial_dlfiles
Ftune
Lecteur_video
Periodiq
Eigenmath fx
Graph3d
Horloge sh4
LibBMP
Libtext
Hxeditor
Pages: 1,2 >>

¤ Transférer un programme sur
sa calculatrice

¤ Vous cherchez une fonction ?
Utilitaires >> Graphs 75/85/95 (SD) >> Add-ins >> FXGB
FXGB
Version : 1.0 Taille : 62188 octets Ajouté le : 2017-12-06 17:54 Modifié le : 2018-02-15 22:10
Auteur et posteur :
Djpadbit
Hors ligne
Membre
Niveau: Intermédiaire
Points: 61
Défis: 0
Message
Planète Casio - Add-in Casio - FXGB - djpadbit - Calculatrices
Nombre de visites sur cette page : 1371
Score au progrank : 19
Pas encore de note !

Vous devez être inscrit(e) et avoir 20 points ou plus pour noter.
69 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 :

Avertissement : Ce 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 (~ 16fps 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)
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 | 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 ?
Julese50
En ligne
Gourou
Niveau: Confirmé
Points: 311
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)
Lephenixnoir
Hors ligne
Administrateur
Niveau: Confirmé
Points: 10640
Défis: 130
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 storm
Hors ligne
Administrateur
Niveau: Aucun
Points: 10038
Défis: 170
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...
Critor
Hors ligne
Partenaire
Niveau: Intermédiaire
Points: 667
Défis: 0
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 ?
Lephenixnoir
Hors ligne
Administrateur
Niveau: Confirmé
Points: 10640
Défis: 130
Message
Posté le 29-01-2018 à 17:11 | #
Ça ressemble fort à l'écran d'accueil de Tetris avec le Kremlin, je me trompe ?


Julese50
En ligne
Gourou
Niveau: Confirmé
Points: 311
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)
Critor
Hors ligne
Partenaire
Niveau: Intermédiaire
Points: 667
Défis: 0
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...
Critor
Hors ligne
Partenaire
Niveau: Intermédiaire
Points: 667
Défis: 0
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 | Suivante

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2018 | Il y a 72 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Casio Education Casiopeia CodeWalrus

Planète Casio est un site communautaire indépendant, géré bénévolement et n'est donc pas affilié à Casio | Toute reproduction de Planète Casio, même partielle, est interdite
Les fichiers, programmes et autres publications présents sur Planète Casio restent la propriété de leurs auteurs respectifs et peuvent être soumis à des licences ou des copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd