Aller au contenu
Bregalad

Le Super FX

Messages recommandés

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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 !!

Partager ce message


Lien à poster
Partager sur d’autres sites

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).

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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 !!

Partager ce message


Lien à poster
Partager sur d’autres sites
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é.

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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).

Partager ce message


Lien à poster
Partager sur d’autres sites

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... ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Restaurer la mise en forme

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

Chargement

×
×
  • Créer...