Jump to content

Débat sur les listes de sprites.


GT Turbo

Recommended Posts

J'y penses depuis un moment mais la on va tous y réfléchir en meme temps pour avoir le meilleur.

 

 

 

Sur la Jag les sprites sont affichés d'après une liste, qui décrit différents parametres pour chaque sprites, et surtout dans les parametres il y a un adresse qui permet de 'linker' le prochain descripteur de sprite.

 

 

 

95% des jeux Jag ou des sources que j'ai pu voir font de la liste statique. On genere la liste chaque Vbl d'après une sorte de pseudo liste.

 

 

 

Mais on pourrait généré une premiere fois la liste en statique et après la géré en dynamique, au lieu de reconstruire la liste, utilisé la possibilité de 'linker' pour effacé ou rajouté un sprite et tout cela pourrait se faire au Gpu, apparement personne ne l'a fait ou y a pensé.

 

 

 

Quelqu'un a une meilleur idée ? Ou une autre technique ?

 

 

 

GT Curieux !! :P

Link to comment
Share on other sites

Je viens de me rendre compte avoir créer deux fois le même forum... :wacko:

 

Bon, ce topic passe en développement, parce que faut pas déconner et je clos un des deux forums...

 

 

 

P.S. : Au fait, c'est pas un débat ça, hein, c'est juste une requète (sur une) technique. Je suis pas Robert (celui qui commence par A, finit par Z et est énorme) mais faut voir à pas prendre les coins pour des coing.

Link to comment
Share on other sites

Salut !

 

 

 

En fait, j'y ai déjà pensé ;) !

 

 

 

Pour mon OS, j'ai réservé une zone mémoire suffisante pour faire une liste de 100 sprites et j'ai ensuite fait un system dynamique : je peux rajouter, enlever, activer ou desactiver n'importe quelle objet afficher et tout sa en pouvant changer l'ordre d'affichage très facilement. (j'utilise une liste chainée)

 

 

 

Pour pouvoir trouver l'objet souhaitait, j'ai rajouter un champ 'nom' qui me permet de mettre un nom à un objet et ainsi de le retrouver facilement.

 

 

 

Ceci me permet de faire :

 

une initialisation de l'affichage au démarrage avec une image de fond et la souris;

 

et ensuite, je peux rajouter les icones, qui sont donc physiquement après l'objet souris mais avec les liens de la liste modifié tel que la souris reste toujours le dernier objet à afficher.

 

 

 

Ce code a été fait au GPU.

 

je pourrais te filer le code et une partie des explications supplémentaires ce week-end.

 

 

 

voici un début d'explication :

 

[pfs]5-jev2_f_objs.pdf[/pfs]

 

 

 

A+

Link to comment
Share on other sites

Voici comme prevu le code GPU et le code 68000 qui va avec.

 

 

 

Mais ne pouvant pas mêtre tout le code (secret oblige ;)), ce code n'est qu'a titre indicatif.

 

il n'est pas possible d'utiliser directement le code (utilisation de variable systeme, et de fonctions que je garde pour l'instant)

 

 

 

Néanmoins, les noms des variables systems sont suffisaments clair pour qu'il soit possible de le faire fonctionner et certaines fonctions utilisé non fourni peuvent être zappées sans problem.

 

 

 

Je pense que même si il n'y a pas (du tout) beaucoup de commentaire, le code est suffisament clair pour être compris.

 

 

 

Et de toute facon, je suis là !!!

 

Alors pas de panique !!

 

N'hésitez surtout pas à me poser des questions !!;)

 

 

 

SCPCD.

 

 

 

 

 

[pfs]5-code_opliste.txt[/pfs]

Link to comment
Share on other sites

Je vois un trap #13, tu l'as détourné je penses, parce que sauf erreur de ma part, aucun trap n'est dispo a l'origine si ?

 

 

 

Est ce qu'il reste un domaine ou tu as pas fais des essais ? Que je puisse quand meme faire quelque chose ? lol !!

 

 

 

La compression (D'images et de données) en général, t'y a pas encore mis le nez dedans si ? Sinon j'ouvres un autre sujet pour pouvoir en discuter, et cela me laissera un domaine ou fouiller !!

 

 

 

GT Trop épaté par SCPCD :yes:

 

 

 

P.S. : On a pratiquement tout ce qu'il faut pour dvper des jeux en séries ! lol !

Link to comment
Share on other sites

Ben en fait, sur mon OS, j'ai utilisé des traps pour des fonctions spécials comme l'ajout de sprites(voir precedent), j'ai aussi fait des fonctions pour l'allocation mémoire et la pagination (au passage : trop génial la pagination quasi-hard ;)!!), et bien d'autres....

 

 

 

Mais je ne sais pas trop si je vais garder le principe des traps car ce sont des interruptions et sa augmente le niveau de priorité du 68000...(et donc sa ralentit le DSP et GPU)

 

 

 

c'est pratique mais bon.....

 

j'hésite encore a les garder....

 

 

 

Sinon, pour que GT puisse s'occuper :P :

 

 

 

Je n'ai pas du tout touché a la compression de données ni des images.

 

Ni a la musique d'ailleurs.(sa serais bien du MP3 non ?)

 

 

 

Au fait, en parlant de compression, il y a une compression video qui semble assez puissante et je voudrais savoir si c'est possible de le faire pour la Jag : c'est la compression XYZ. (elle compresse plus que du MPEG1 et est de meilleur qualité et a besoin que d'un peu plus de puissance)

 

 

 

A+

 

SCPCD.

Link to comment
Share on other sites

Tu as un peu de doc sur ta compression XYZ ?

 

 

 

Je m'occupes de la partie compression, ayant déjà eu l'occasion de faire 2,3 trois essais avec Azrael. Par contre je vais surement voire pour trois compressions différentes :

 

 

 

- graphisme fixe

 

- graphisme animé

 

- son

 

 

 

J'ouvre un autre sujet pour eviter de polleur celui la.

 

 

 

 

 

GT En train de compressé ! ;)

Link to comment
Share on other sites

J'ai pas encore eu le temps de regardé en détail ton code, comme j'ai encore celui de Fredifredo a regarder de près. Apparement le processeur objet détruit des parties de phrases de certain objets, c'est vrai ? Et c'est bien ce indiqué dans la doc ?

 

 

 

 

 

GT Turbo :D

Link to comment
Share on other sites

  • 2 months later...

Je fais remonter ce sujet, car j'ai commencé a écrire un gestionnaire de liste, pour l'instant juste au 68000 (Quoique que vu les décalages et les bricolages sur les champs de bits, le Gpu serait plus de mise). Je réécrirais celui ci après au Gpu, cela pour des histoire d'optimisation et de controle.

 

 

 

Le but étant bien sur de tout faire au Gpu, mais absolument tout, cela pour éviter de plomber le bus avec notre 'escargot' de 68000, le maillon faible d'une Jaguar. Au départ j'avais prévu une base de 192 sprites, car c'était divisible par 32, mais après calcul et essais, je m'apercois que le procédé que je voulais utiliser est plus lent que l'actuel et mange de la ram en plus pour rien, donc 'au revoir !'.

 

 

 

Je vais allez continuer le code, a plus !!

 

 

 

TG orbuT :wacko:

Link to comment
Share on other sites

Azrael :


Mouais, si ça continue on va retirer le 68000 car il bouffe du temps d'horloge sur le bus :P





C'est exactement cela, le but du jeu c'est de rentrer le maximun dans le couple Gpu / Dsp et de carrément mettre le 68000 en attente, pour éviter qu'il nous traine ces boulets !!



GT En train d'accélerer ! :yes:
Link to comment
Share on other sites

Je reprends un peu le code ce soir, et a partir de demain soir, je me bloques le weekend sur la gestion de liste, je veux voir des sprites, des sprites a la tonne, mon écran plein de petit spritos tout colorés, désolé pour le délire mais j'ai trop hate.

 

 

 

GT Amoureux des sprites :yes:

Link to comment
Share on other sites

Vu que maintenant je peux debugger les listes de sprites, j'ai pu réparer ma routine, et j'ai commencé a écrire les routines pour modifier les coordonnées, en X cela est passé tout seul en Y j'ai un petit soucis suite au fait de la restauration de la liste vu qu'elle n'est pas réconstruite a chaque Vbl (Power !!! :yes:), mais ce soir j'attaques de plein pied !!

 

 

 

GT Parti coder !! :yes:

Link to comment
Share on other sites

AAAAAAAAAARRRGGGHHH !! Je vais finir interner !! Mon gestionnaire de sprite ne veut pas m'écrire mon objet de fin de liste (Stop objet) en 3 position quand j'ai deux objets !! Avec un objet cela marche parfait, mais avec 3 il s'amuse a me placer un sprite 'objet bitmap' vide a la place et bonjour le plantage !! Je vais me calmer un peu et reprendre plus fort, c'est pas un bout de code qui aura ma peau !! Parce que GT Trop fort (Et surtout très vantard....)

 

 

 

 

 

GT En train de me calmer !! :wacko:

Link to comment
Share on other sites

Non, le nombre de sprite peut ètre impaire, je vais vérifier certaines choses, car le plus c.... c'est que la liste doit se trouver sur une adresse multiple de 8 (Cela passe encore), un ojet bitmap standard doit ètre aligné sur 16, un objet bitmap zoomé sur 32, donc faut que je vérifies aussi tous les alignements (Cela fait que la 4 fois que je le fais !)

 

 

 

GT Pas sur la limite !! :wacko:

Link to comment
Share on other sites

Fredifredo :


As-tu regardé dans le code source que je t'ai envoyé ? ou bien celui de Pong ?





Mon problème est plus un problème de code meme, pas de principe, et le petit truc c'est que beaucoup de personnes reconstruises la liste a chaque Vbl, c'est plus simple mais moins rapide c'est pour cela que d'autres sources ne sont pas trop a meme de m'aider, mais le truc ultra c.. c'est que je fais les essais d'abord au 68000 pour après recoder le tout au Gpu, je ferais mieux d'attaquer au Gpu direct, j'ai l'impression que je me débrouilles mieux avec lui qu'avec le 68000 :wacko:



Ca va se finir comme cela.....





GT Un super pote au Gpu :wub:
Link to comment
Share on other sites

J'ai règlé mon problème, par contre ce rigolo d'O.P. (Object Pocessor) ne m'affiche pas mon second sprite, faut que je vérifies l'adresse du graffe. Sinon cela a l'air de coller. Merci beaucoup au debugger !!!

 

 

 

GT Plus bugger !! :yes:

Link to comment
Share on other sites

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...