Bregalad 0 Signaler ce message Posté(e) 16 avril 2009( 16/04/2009 21:35 ) Je suis curieux de savoir comment ce processeur fonctionne. Simplement voilà après de très nombreuses recherches sur internet je ne trouve que des informations non-technique (comme "Le super FX permet à la SNES de faire des graphiques 3D pleins de polygones") ou des information peu techniques (comme "Le super FX tourne à 20Mhz ce qui est énorme et permet aux jeux d'avoir des graphiques plus perfectionnés par exemple utiliser des polygones faire des graphiques 3D"). Mais ceci ne m'intéresse pas, ce qui m'intéresse c'est de savoir comment il fonctionne qu'est ce qu'il y a dans ce chip, comment celui ci prépare des graphiques étendus et comment la Super NES utilise ceux-ci. En fin de compte je me demande s'il existe une démo amateur démontrant les capacités du circuit, ou tout du moins de savoir comment en faire une. Mais là encore zero information sur ce circuit (il y a cependant des infos respectables sur le DSP-1 et le Cx4 ce qui est déjà ça). D'après ce que j'ai compris : - Le super FX est un processeur RISC (un peu comme un PIC) qui a de la mémoire cache et des DMA. - Il est possible pour la SNES d'adresser directement une partie de la mémoire partagée avec le Super FX ce qui lui permet de faire des DMA directement du super FX dans la VRAM - Le super FX ne permet en aucun cas d'accroitre les possibilités graphiques de la NES d'un point de vue technique. Il permet simplement de faire des calculs beaucoup plus rapidement et, utilisé pour les graphiques, il permet à la SNES de redéfinir son tileset intégralement chaque frame. Comme un background permet l'utilisation de 1024 tiles à la fois et que l'écran fait 1024 tiles, ceci permet de simuler un mode "bitmap". Maintenant ce que je suis nettement moins sur : - Il est possible d'écrire son propre programme pour le Super FX ?? - Il y a déjà des fonctions écrites dans le chip pour l'accélération graphique ?? - Le temps de VBLank de la SNES ne permet que de faire 6ko de DMA, ce qui correspond à 192 tiles en 4BP. Il faudrait alors 6 frames pour rafraichir tout l'écran ? Encore une fois il y a zéro info dispo à part la doc "officielle" de Nintendo qui est extrèmement peu précise et floue donc tout plus serait le bienvenu. Citer Partager ce message Lien à poster Partager sur d’autres sites
remy 1 Signaler ce message Posté(e) 17 avril 2009( 17/04/2009 05:47 ) oui, on as beacoup de dificulté a trouver des info sur ce chip, on s'y était attarder avec olorin pour le projet du linker et bon a vrai dire on as laisser tomber le FX. je vais faire quelque recherche aujourd'hui puis jte tien au courant !! Citer Partager ce message Lien à poster Partager sur d’autres sites
gatchan 14 Signaler ce message Posté(e) 17 avril 2009( 17/04/2009 11:35 ) Les meilleures sources d'info sur le Super FX sont d'abord les brevets : Graphics processor with enhanced memory control circuitry for use in a video Programmable graphics processor having pixel to character conversion External memory system having programmable graphics processor Ensuite, le code source de Snes9x (ou Zsnes), pour connaitre les opcodes. Si tu veux analyser le code Super FX des jeux, il y a le debugger de Fusoya. Sinon, je ne connais pas de compilateur de code Super FX, il devrait être possible d'adapter xkas, mais je n'ai jamais vraiment eu le temps de m'y pencher. Pour ce qui est des fonctionnalités, la doc de Nintendo les résume bien (j'aime beaucoup le fait qu'on ne puisse pas avoir de multitap en même temps qu'un jeu SuperFX), et si tu lis bien les brevets, il y a des extraits de code. Pour ce qui est des graphismes en eux-même, je considère le SuperFX comme un processeur facilitant les calculs mathématiques (et donc aidant pour la 3D). Pour la 2D, le rajout principal est un Plot X,Y, ce qui permet de se libérer des limitations liées à un système à base de tuiles (tiles). Citer Partager ce message Lien à poster Partager sur d’autres sites
Bregalad 0 Signaler ce message Posté(e) 17 avril 2009( 17/04/2009 14:23 ) Pour les brevets (enfin le brevet car il me semble que c'est 3 fois le même) c'est pas vraiment des explications très limpides mais bon au pire c'est déjà ça. Le debugger est cool c'est une bonne trouvaille. Sinon oui ça serait intéressant de voir les sources de SNES9x et/ou de ZSNES si elles sont commentées. Citer Partager ce message Lien à poster Partager sur d’autres sites
gatchan 14 Signaler ce message Posté(e) 17 avril 2009( 17/04/2009 21:49 ) Pour les brevets (enfin le brevet car il me semble que c'est 3 fois le même) Il y a des petites variantes. Citer Partager ce message Lien à poster Partager sur d’autres sites
Bregalad 0 Signaler ce message Posté(e) 18 avril 2009( 18/04/2009 12:43 ) OK donc a ce que je vois le Super FX est un processeur normal qui fonctionne en parallèle tout simplement. Il peut exectuer des programmes depuis la ROM et la RAM de la cartouche et sa propre RAM cache (mais comment peut-il executer un programme depuis la ROM et la RAM alors que la SNES l'utilise déjà ? Technique de bus partagé et accès entrelacé ou il y a une ROM dans le chip lui-même ? mystère total). Il a une puissance de calcul élevée, et à des instructions "COLOR" et "PLOT" qui permettent de créer un bitmap très rapidement, qui est convertit automatiquement en tiles 2BP, 4BP ou 8BP, et une fois fait le bitmap est envoyé à la SNES par DMA. Star Fox réduit la taille de l'écran verticalement pour pouvoir faire plus de DMA et rafraichir l'entier des tiles de l'écran le plus rapidement possible. Il ne fait donc rien d'autre que d'accélérer ce que le CPU de la SNES pourrait faire tout seul : En effet pour appliquer des transformations linéraire genre mode 7 sur les sprites, j'ai fait un test sur NES il faut genre 2 secondes (100 frames) pour calculer un sprite de 643x64 pixels (sans trop optimiser mon code cependant). La SNES étant que 3 fois plus rapide que la NES, il faudrait environ 30 frames pour calculer une telle image, alors que dans Yoshi's Island le super FX le fait en quelques fractions de secondes, permettant d'avoir de nombreux sprites "genre mode 7" comme la GBA. En reprogrammant tout ça pour un RPG on pourrait avoir un jeu avec des graphiques genre Golden Sun sur la SNES ce qui serait formidable !! Citer Partager ce message Lien à poster Partager sur d’autres sites
gatchan 14 Signaler ce message Posté(e) 18 avril 2009( 18/04/2009 14:30 ) mais comment peut-il executer un programme depuis la ROM et la RAM alors que la SNES l'utilise déjà ? Technique de bus partagé et accès entrelacé ou il y a une ROM dans le chip lui-même ? mystère total). Pour la réponse, lit la doc technique de Nintendo, c'est expliqué. Citer Partager ce message Lien à poster Partager sur d’autres sites
Olorin113 1 Signaler ce message Posté(e) 19 avril 2009( 19/04/2009 22:11 ) Salut Bon je me suis un peu penché sur le problème il y a quelque temps et en fait... j'ai mis cela de coté. Déjà c'est un coprocesseur qui a sa RAM et sa ROM. Pour y accéder, la Super Nes utilise des adresses pour accéder à ses fonctionnalités. Il faut mater le mapping mémoire pour savoir où cela se trouve. Tu mattes le rar, qui est en lien ci-dessous, book2.pdf page 2-1-1, et tu auras réponse à tout.Et si jamais tu comprend comment sa fonctionne, nous sommes tout ouïe afin de nous éviter des heures de lecture et de traduction ;) http://www.romhacking.net/docs/SNESDevManual.rar Citer Partager ce message Lien à poster Partager sur d’autres sites
Bregalad 0 Signaler ce message Posté(e) 20 avril 2009( 20/04/2009 15:17 ) Oui j'ai déjà lu cela plusieurs fois et honnêtement je n'ai pas tout compris mais c'est pas grave, j'ai déjà quelques meilleures idées sur le fonctionnement global du chip. Quand à faire un super jeu homebrew qui l'utilise honnêtement ça serait cool mais pas pour demain !! Il me faut déjà en faire sur NES et sur SNES "standard". D'après ce que j'ai compris, les jeux s'arrangent pour que ente la ROM et la RAM présentes sur la cartouche, le CPU de la SNES utilise l'un pendant que le Super-FX utilise l'autre et il n'y a jamais confit mais je ne suis pas sur. Ca me semble logique de télécharger le programme du Super FX (qui consiste que en parties de communications et des routines faisant des calculs graphiques) dans la SRAM et de garder le programme principal (beaucoup plus conséquent) en ROM. Après bien entendu si le jeu lague il peut devenir intéressant d'utiliser le Super FX pour accélérer le moteur du jeu mais bon ça doit pas être trivial à faire. (Et il y a encore le SPC700 en plus de tout ça). Citer Partager ce message Lien à poster Partager sur d’autres sites
Olorin113 1 Signaler ce message Posté(e) 20 avril 2009( 20/04/2009 15:46 ) Au pire tu fait toi même une cartouche qui intègre un chip graphique beaucoup plus performant et moins embêtant à programmer, en C par exemple. Et a se jour, tu peux te permettre de mettre un chip qui fait + de 80Mhz et de le balancer dans la console qui ne comprendra pas ce qui lui arrive :D Mais bon je m'écarte, c'était juste une idée, à garder pour plus tard tient... ;) Citer Partager ce message Lien à poster Partager sur d’autres sites
Bregalad 0 Signaler ce message Posté(e) 21 avril 2009( 21/04/2009 16:18 ) Cool comme idée mais tu sembles oublier qu'il serait impossible d'émuler ceci sans fabriquer son propre émulateur. De plus le Super FX est suffisament puissant, la seule limitation est la vitesse du DMA de la SNES qui ne permet par exemple pas au Super FX de faire tout l'écran en 256 couleurs ! Ce dernier en serait capable, mais il faudrait presque 1/3 de seconde pour rafraîchir l'écran. Citer Partager ce message Lien à poster Partager sur d’autres sites