Lephénixnoir a écrit :Salut à tous ! Je profite de cette Revue des Projets pour vous toucher quelques mots du projet jamais-fini dont je me suis rendu coupable,
gint.
J'ai été si long à sortir la première version que le temps que j'y arrive, Casio ne produisait déjà plus les Graph 75+ qui étaient les seules machines monochromes à pouvoir utiliser gint sans transformation : pas de bol !
Alors avec la Graph 90 qui débarque, pour investir la plateforme, je me suis penché sur un portage de la bibliothèque (en même temps que je peaufine l'optimisation et l'allure extérieure de la version monochrome) sur cette nouvelle machine. La bonne nouvelle, c'est que le processeur est un SH4 habituel, donc plein de choses marchent sans effort !
Le point le plus crucial c'est l'écran, mais grâce à la documentation du produit et aux efforts de SimLo, ça se passe assez bien. J'ai réussi à afficher des choses de façon « naïve » en quelques heures de travail :
Il faut encore que j'apprivoise le DMA, un outil super pratique qui permet d'envoyer la VRAM à l'écran pendant que l'application fait autre chose. Utiliser le DMA était déjà une technique classique pour gagner des perfs' sur la Prizm !
Je suis content de pouvoir annoncer les premiers résultats issus du portage. Mon application de démo de gint arrive déjà à :
- Charger les add-ins dans la mémoire
- Installer et utiliser le gestionnaire d'interruptions
- Faire fonctionner les 9 timers de la machine !
- Afficher des choses à l'écran comme sur la photo
J'ai également fait des découvertes de reverse-engineering utiles pour les applications de gint en général :
- La SH3 possède 1 timer supplémentaire précis à 30 ms près
- Les SH4 possèdent 6 timers supplémentaires précis à 30 ms près (
)
- La RAM statique sur SH4 monochrome s'élève à 64k et pas 8k comme sur le SH3 !
Mes occasions de travailler sur ce projet se présentent en pointillés mais tous mes efforts sont dirigés à rendre gint utilisable et documenté sur la Graph 90 pour la rentrée prochaine, où l'on espère un décollage de popularité du modèle.
N'hésitez pas à demander des explications si je parle un langage qui vous est inconnu, ou à me forcer à écrire de la doc' si vous êtes intéressé(e) pour développer quelque chose avec gint. Et merci d'avoir lu jusque-là !
Citer : Posté le 14/05/2018 06:55 | #
C'est chouette de voir que ça avance, à son rythme, certes, mais ça reste impressionnant ! Et voir cet écran entièrement rempli ouvre des perspectives plutôt intéressantes !
Citer : Posté le 14/05/2018 13:17 | #
Effectivement se débarasser de la bordure est quelque chose d'assez satisfaisant !
Par contre la VRAM grossit donc ça pose des problèmes pour choisir sa localisation en mémoire... desquels tu as déjà eu un aperçu.
Citer : Posté le 14/05/2018 18:13 | #
Super ! C’est vraiment bien que le portage sur les 90 soit « aussi simple ».
Le DMA c’est un coprocesseur dédié à l’affichage ? Tu dis qu’il est capable de travailler en parallèle du SH4.
C’est propre aux écrans couleurs où il y en a un sur les monochrome ?
Citer : Posté le 14/05/2018 18:32 | #
DMA(C) signifie en fait Direct Memory Access (Controller) et fait référence à une méthode très répandue pour transférer des données à ou depuis des périphériques. Comme son nom le suggère, elle consiste à envoyer les données directement depuis ou vers la mémoire, sous-entendu sans avoir à passer par les registres du processeur. Il y en a sous différentes formes, mais par exemple il y en a sur le PC aussi.
Sur Graph 90, le système utilise bien le DMA pour envoyer des données à l'écran, car c'est rapide ! Mais la fonction Bdisp_PutDisp_DD() se met en attente jusqu'à ce que le transfert soit terminé, ce qui gâche le parallélisme. Les développeurs Prizm (Nemhardy y compris) se sont débrouillés pour appeler le DMA eux-mêmes, et faire des calculs pendant le transfert pour gagner des FPS !
Il faut se rappeler que le DMA est un principe général et on peut très bien utiliser un DMA pour échanger des données audio ou vidéo, par exemple.
Sur la monochrome (en tous cas avec gint), on a 400 FPS sans bouger le petit doigt, donc le besoin du DMA n'est pas du tout le même. De toute façon il n'y a que 1024 octets à transférer (contre 160 ko sur la Graph 90) donc le gain lui-même ne justifie pas toute la recherche nécessaire pour savoir ne serait-ce que si le DMA peut communiquer avec l'écran.
Citer : Posté le 14/05/2018 19:23 | #
OK, je vois, merci pour l'explication