-
Content count
3,199 -
Joined
-
Last visited
-
Days Won
2
Posts posted by GT Turbo
-
-
Fredifredo :
Metal Slug c'est un de mes rêves sur jaguar !
j'avais commencé la chasse aux sprites sur le net et j'avais même regardé des sites sur le jeu de combat PC ou ils pompent les sprites Neo Geo avec Neoragex ou il truc comme ça ... on pourrait juste utiliser les sprites des persos et puis faire des fonds d'écran 16 bit ?
Je suis pas sur pour des raisons de droit qu'on puisse reutiliser les sprites, le jeu ayant été adapté sur PSII, les droits doivent toujours avoir lieu. On parle de style de jeu, on peut reprendre le meme principe, d'autres armes, d'autres sprites, la aucun soucis se posent.
GT Turbo
-
SCPCD :
HHAAA...
Les joies du debuggage du GPU !!!
Que du bonheur !!
Boite de gatos
!! Et Coca !! Et une nuit blanche dans la g.... !!
Ce code va tourner très vite, j'ai des sprites a afficher !!
Et c'est dans ce genre de moment, je m'apercois qu'il faudrait que je continues un peu le nouveau debugger !! Avec la possibilité de tracer du Gpu !!
GT En train de debugger !!
-
lea G_CTRL,a0
move.l #1,(a0)
Wait :
btst #0,3(a0)
bne.s Wait
Ce style de boucle pour atteindre la fin d'un proc, ne marche pas du tout si le proc en question fait le travail trop vite !!
Retour a nos polygones :
La routine est entierement Gpu-isé, mais j'ai un débugguage de fou a faire, mon code a l'air instable comme un pingouin sur une savonnette !! Mon code fonctionne pas tout a faire normalement : l'affichage d'un polygone fait apparaitre un paquet de triangles et de formes plus ou moins bizzare et l'insertion d'un nop a différents endroits du code soit ne fait rien apparaitre, soit plante direct !! Sur ce coup je sens que je vais transpirer !!!!
GT Paniqué !!

-
Azrael :
Une multiplication de D0 par D1 coute-t-elle moins chere que
add.l D0,D0
add.l D1,D1
move.l log(D0),D2
move.l log(D1),D3
add.l D2,D3
move.l exp(D3),D0
Estimation a l'oreille, j'ai pas de table de cycles 68000 sous la main :
add.l d0,d0 (4 ou 8)
add.l d1,d1 (4 ou 8)
move.l 0(a0,d0.w),d2 (aux alentours des 20 cycles)
move.l 0(a1,d0.w),d3 (aux alentours des 20 cycles)
add.l (4 ou 8)
move.l 0(a2,d3.w),d0 (20 de nouveau)
Ceci est une estimation (Tentative de souvenirs) d'ou mes 4 a 8. Ce soir je prendrais les cycles exacts, mais cela devrait etre un truc pas trop loin !!
Ce qui ferait un total de 84, la multiplication signé est (de tete encore une fois !) aux alentours des 70, donc !! Enfin tout cela est a vérifier. Mais le calcul serait plus très juste si on applique cela sur le Dsp, ou une multiplication fait 3 cycles, et je vais voir pour t'envoyer la doc concernant la multiplication matriciel hard du Dsp, mais cela a l'air 'funky' quand meme. Donc dans le cas du Gpu ou du Dsp autant faire une multiplication.
GT En train de compter !!
-
SCPCD :
En tout cas tu fais un secret boulot !!
J'ai hate d'avoir la demo sur une CF
Je t'avoues que cela répresente pas tellement de boulot, je suis parti d'un source 68000, qu'on avait devellopé pour faire des polygones pour nos démos, après un peu d'optim pour s'adaptater au mode vidéo (C'est le pied l'optim en true color, plus de calcul de bit et d'offset en utilisant des techniques plus ou moins exotiques !
) et après un transcodage pour le Gpu, qui faut le dire est très simple a programmer pour ceux qui s'y connaissent un peu en assembleur !!
Pour l'instant le plus gros boulot c'est toi qui l'a fait (Voir CF !), faudrait encore que je fasses pareil pour la routine 3d, car voir un paquet de polygones fixes a l'écran c'est pas très répresentatif !!
GT En train remplir et j'ai bientot fini !!
-
La routine est presque fini, j'ai enfin pu avoir des tests corrects (Voir dans cette meme partie ma petite prise de tete avec les sauts conditionnels), enfin il me reste encore deux bugs, qui font que ma recherche de Y min et Y max du polygone partent en fleurs, mais je penses que ce soir, la routine fonctionnera !!
GT En 3D !!

-
Merci je vais enfin pouvoir finir la routine de polygone.
Maintenant je sais aussi pourquoi mon clipping gauche ne marchait pas malgré le meme code qu'a droite !!
GT Presque a la fin !!

-
Comme cela on a une liste de jeux, quand on aura plus d'idées, en plus pour l'instant c'est rien que du bon jeu (Cela n'engage que moi !).
Partant aussi pour Meta Slug, j'y ais joué sur PS2, le genre de jeu que j'aime !!
J'update la liste au fur et a mesure
GT Un bourrin !!

-
Est ce que quelqu'un a la liste des codes conditions pour les sauts Gpu / Dsp ?
A part :
NE (Not Equal : Différent)
E (Equal : égal)
PL (Je supposes plus, soit posifit)
MI (Je supposes minus, soit négatif)
HI (Higher, soit plus grand)
Mais plus petit ? Je pensais faire un LT (Less Than) mais pas accepté !!
Je prends les liste completes ! lol !

GT Perdu dans ces c...... de codes de m......

-
J'ai quelques idées de jeu sur Jaguar, mais vu que j'ai arrété de develloper 40 projets en meme temps et que ma mémoire de poisson rouge ne m'aide pas, je notes ici des idées de jeu que je verrais bien sur Jag, si vous avez des idées ou des envies, postez :
- Bomberman
- Blood Money
- Metal Slug (Compil des 5 épisodes, proposé par SCPCD)
- Style Bubble Bobble, Rod Land (RaZ)
- Alien Versus Predator mais jouable en reseau !!
a 2 minimun !!- Doom enfin du Fps quoi !! (Du gros je sais !)
- Speedball !!!
- Un Mario Kart, enfin un Atari Kart avec une poignée de fun en plus !!
- Minibetonsoldier (Fredifredo)
- dans le style que Fredifredo a donnée avec minibetonsoldier, meme en mouvement on aurait operation wolf
- un DDR, ces c... de jeux ou on marche comme un ane sur un tapis fléchée au rythme d'une musique
J'avais d'autre idées mais GT Plus très frais !!

List update : minibetonsoldier
-
M...... m...... et m......
Il va falloir que refixes mes objectits a la baisse.....
Encore trompé a la ..................... hausse !!! J'ai pratiquement fini la routine 100% full Gpu, mais hier soir pour faire une transition dans mes 48 versions de mon code, j'ai fait une version intermédiaire, calcul des points 68000, remplissage au Gpu mais utilisation de la ram Gpu pour rentre les coordonnés X,Y et la je finis avec 39 polygones, si on compare au 7 du tout début au 68000, il y a pas photo, le rapport est de 5 fois plus (Et meme un peus plus !).
La routine de calcul des points au 68000 est fini, mais j'ai quelques soucis a faire accepter mes saut conditionnels a Mad Mac. J'espère que ce soir la routine 100% Gpu sera opérationnel. J'avais visé les 40 polygones et bien on se fixe un nouvel objectif 48.
GT toujours pas a fond !! Non !! Gpu Power !!

P.S : Pour l'instant avec le code de restauration des listes au Gpu plus la routine de remplissage au Gpu (+Blitter) j'en suis meme a 350 octets !! Asm Power !!

-
Je suis en train de tout mettre dans le Gpu, donc voici en clair pour afficher un polygone comment cela va se passer :
vous devrez juste passer :
l'adresse de votre tableau de points (X,Y)
qui devrait ressembler a ceci :
Tab_XY:
dc.w 160,100
dc.w 200,40
....
dc.w -1,-1
La dernière ligne indique a la routine la fin des coordonnées.
La routine referme toute seule le polygone, puis l'adresse de votre écran et la couleur du polygone, un dernier truc l'offset pour passer a la ligne suivante, dans le cas ou votre écran ferait pas par exemple 320 colonnes
voila ca devrait etre tout.
si des personnes n'aime pas cette organisation, dite le moi, je veux pas reecrire toute une partie de code alors que j'aurais fini la routine !!

GT En train de finaliser la routine Gpu

-
J'ai déjà posté ceci en partie privé, mais cela mérite une déclaration officielle,
nous sommes heureux d'acceuillir une graphiste , oui oui !!
Voici un exemple de dessin qu'elle fait :
J'en posterais surement d'autre, elle doit m'en envoyer des plus en rapport avec notre style.
Donc bienvenue a marlysa sur Jagware !!

GT Turbo

-
SCPCD :
Le system d'interruption sera plus rapide je pense que dans le cas où l'on met en veille le 68000 en attendant une interruption.
Un truc comme un :
< -
Note, rajout a faire dans la routine de gestion :
- rajout d'un hot spot (Point d'action du sprite), par exemple pour des tests, c'est peut etre mieux de considérer le centre du sprite et pas un angle.
- animation : j'ai de la place dans la structure de ma liste pour rajouter quelques paramètres, donc faut que je rajoutes l'animation (Elle sera géré automatiquement par le gestionnaire), en boucle, en sens unique, en aller retour, exemple : un vaisseau les flammes des propulseurs, on s'occupe de rien, on indique les sprites lors de la création, le sens de l'anim et hop c'est fini.
Yété !!

-
Après cette brève incursion dans la 3d je vais retourner afficher mes sprites (dès que la routine full Gpu fonctionnera), faut que je finisses mon gestionnaire de liste

GT Reparti pour le sprites !

-
Comme cela ca marche mieux :
lea G_CTRL,a0
move.l #1,(a0)
Wait : move.l (a0),d0
btst #0,d0
bne.s Wait
Hier soir une dizaine d'essais pour commencer a optimiser et apparement cela marche, pendant un moment j'ai pensé a utiliser l'inter, mais cela risque pas d'ètre plus lent ? Un traitement d'interruption par un 68000 c'est pas très rapide et en fin de compte, l'inter elle meme va juste placer le flag donc on fait un traitement pour rien, l'ancienne technique est plus rapide je penses non ?
Parce que du coté Gpu, a la place de mettre 0 dans G_CTRL il suffit de mettre 2 (%10) pour generer l'inter.
J'ai dégagé plusieurs compteur décimales que j'avais (5 au total) j'en ai dégagé 3 et je suis a 32 polygones. Ceci est une broutille. J'ai completement réecrit la routine de calcul des points au Gpu, il me reste juste a voir pour le passage de paramètres et la mon but c'est les 40. J'ai pensé a un super truc mais qui va me couter assez cher en ram 1600 octets. Par la j'ai les 2 routines (remplissage et calcul) a part, ensuite je comptes bien les recoller, mais il me faut les tableaux x min et x max de chaque ligne, au lieu d'utiliser la ram standard, je pourrais utiliser la ram Gpu, j'évites de toucher au bus et je profites de la vitesse d'accès mais la ou ca fait mal c'est cela :
J'ai deux tableau de 200 lignes (Pour un écran de 200 lignes of course !), ce qui fait (2+2)*200=800 octets, mais le petit soucis c'est que le Gpu en interne ne fait que des accés 32 bits (4 octets) ce qui fait que mon tableau ferait (4+4)*200=1600 octets, ca fait cher, mais c'est le prix a payer pour que cela pousse. Pour résumé dans la ram Gpu faut que je cases :
- le gestionnaire de liste
- la routine de polygone
- 1600 octets de tableau
Un défi bien interressant, par contre après je passerais au Dsp, car la ram va bientot me manquer !!

GT

P.S. : Je viens de réaliser un truc, hier soir j'ai essayé ca :
[code]lea G_CTRL,a0
move.l #1,(a0)
Wait :
btst #0,3(a0)
bne.s Wait
Et ca a planté direct, c'est simple 90% des registre de la Jag necessite un accès en long (4 octets) et la je fais un accès octet !! Moi et ma tête !!

-
SCPCD :Citation
Un truc pas très loin :
lea G_CTRL,a0
move.l #1,(a0)
Wait : move.l (a0),d0
bne.s Wait
je comprends pourquoi ca ne marche pas !!
car lorsque tu lit G_CTRL, tu ne lis pas exactement la valeur de CTRL ecrit par le GPU !!!
Car lorsque tu lis, il y a la version du processeur dans les bits le plus haut, et les latchs interruptions qui ne sont egal a 0 que si tu as ecrit un 1 dedans !
il faut donc juste tester le bit 0 de ce registre.
Exact, j'avais pas pais gaffe au reste du registre, merci pour le coup de pouce, je modifierais mon code ce soir. Un problème en moins !
GT Débuggué !!
-
SCPCD :
- utiliser une adresse dans la RAM GPU pour indiquer qu'il a fini et tu lis au 68000 cette adresse en permanance.
J'ai déjà essayé et ca marche pas
SCPCD :
mais peut-être que en ne faisant que
wait_for_gpu:
move.l G_CTRL,d0
btst.l #0,d0
bne.s wait_for_gpu
Un truc pas très loin :
[code]lea G_CTRL,a0
move.l #1,(a0)
Wait : move.l (a0),d0
bne.s Wait
J'ai meme essayé un tst.l (a0) mais que nenni !!
Je vais essayer la méthode que tu m'as décrite mais c'est bizzare ce truc, tu me diras un de plus !!
GT Presque perdu
-
SCPCD :
A non je me suis trompé
J'ai verifié dans un de mes codes et j'ai bien fait comme toi...
Juste il va falloir que je cherches..... hé m.......
J'hallucines !! Car le truc c'est que cela marche pendant une dizaine de fois et après le code 68000 se retrouve bloqué sans raison. Le 68000 ne dispose pas de cache donc rien a voir de ce coté !! Le problème quand on devellope sur la Jag, non ce n'est pas la difficulté de programmmer ou autres, c'est de tout synchroniser !! ARGHHHHHHHHHHHHHHHH
GT Asynchrone
-
Azrael :CitationGT Turbo :
il faut savoir une chose ultra importante, le Dsp est libre
Et la musique ? c'est le DSP qui s'en charge, non ? Au final ça ne fait plus trop de temps libre... Le mapping sous AVP est fait au GPU ou au Blitter ?
Le dsp est effectivement prévu pour la musique mais une routine de zik de 12 Kilos c'est écrit en basic !! Ou elle dispose d'un sacré paquet d'options. Le mapping doit ètre fait au blitter, tu peux recopier une ligne (pas droite) en la zoomant avec le blitter donc cela simplifie beaucoup les routines de mapping !!! Tu peux utiliser le Gpu pour calculer les valeurs a mettre dans le blitter, vu qu'ils sont 'super potes' ca va plus vite !!
GT Un copain au Gpu !!
-
SCPCD :
Pour le GPUGO (Start/Stop du GPU), tu le fais comment ?
Parceque, seul le GPU peut le remettre a Zero et il faut le faire en soft : c'est a dire en lisant le G_CTRL et en mettant a 0 le bit 0 puis de reecrire le resultat dans le registre.
Mais du fait du pipeline, le GPU ne stop pas immediatement, il peux executer plusieurs instructions après si elles peuvent rentrer dans le pipeline avant la demande d'arret du GPU.
J'ai effacer le registre comme cela :
store r20,(r22)
avec R22=G_CTRL et bien sur R20=0
a priori donc l'écriture directe pourrait ne pas marcher, il faudrait faire comme tu a écrit. Si l'écriture directe ne marche pas ou pas correctement, mon Gpu execute du code après ma routine !!
si c'est vrai la routine est encore plus rapide.
Pour le pipe line je sais j'ai un paquet de nop derrière
GT Pas effacé !!
-
Azrael :
Joli, mais je dois jouer mon rôle d'emm.... Une question me taraude : y-a-t'il en core du temps machine pour faire d'autres calculs ? Et quelle taille font tes polygones ? Et question subsidiaire : AVP et Iron Soldier tournaient-ils en 1 vbl ?
Oui, car il faut savoir une chose ultra importante, le Dsp est libre !!! Et oui l'avantage des procs en parallèle. Pour l'instant il sert juste a lire les Joypads, ce qui fait une routine de 280 octets, alors qu'il y a de la place pour 12 Kilos, le 68000 s'emmerde aussi, mais celui la on le laisse de coté a part me pourrir les codes, c'est tout ce qu'il a réussi a me faire.... Et en plus, une partie de mon code Gpu passe son temps a attendre que le blitter est fini la ligne pour balancer la suivante, si je voulais jouer l'ultra 'chaud', j'insérais carrement des routines de calcul durant ce temps mort, j'ai l'impression d'inséré du code dans une routine d'overscan (Souvenir de démomaker !).
Dessin :
Mise en place des ------ Temps mort -------------- Boucle, et on recommence.
valeurs blitter
Les polygones je vous passerais les coordonnées et sinon un exemple pour ceux qui peuvent lancer le code. AVP est assez loin de la Vbl, I.S. est plus proche mais il tourne pas en une Vbl.
GT Turbo
-
Tout est rentré dans l'ordre, je tournes 4 fois plus vite. J'ai réussi a tout débugger, en reprenant le premier polygone (Mon passage de tableau fonctionne !), je suis a 29 Polygones / Vbl.
Mes 'ratures' venait du 68000, ma boucle qui attendait que le Gpu ait fini son boulot ne fonctionnait pas, j'ai fait attendre le 68000 comme un ane, et maintenant cela marche.
La routine Gpu n'est pas optimisé, par contre il y a déjà le clipping dedans !! Héhé !!
Seul la partie remplissage est au Gpu, le reste c'est du 68000, donc faut que je réecrives tout le reste au Gpu, donc préparez vous encore a manger du chiffre qui fait mal !!
Par contre si quelqu'un a une idée pour synchroniser le Gpu, dans ma boucle 68000 j'attendais que le registre de control (Start / Stop) du Gpu soit égal a zéro, la routine Gpu effface ce registre toute seule comme une grande, mais cela parfois fonctionne parfois pas du tout, donc ? J'ai essayé en utilisant un autre flag, mais cela fait pareil !!
Pour ceux qui veulent faire du code Gpu n'oubliez pas une chose insérez TOUJOURS un Nop après un saut, car il faut le savoir, que le saut soit pris ou pas l'instruction suivante est executé !! Heuresement que c'est inscrit dans les docs, sinon je débugguerais encore maintenant !!
GT Turbo qui
son Gpu
Une belle bête incomprise : le blitter
in Development
Posted · Report reply
Areuhgfsdsfhdgiosf meme après deux boites de gato (Je vais vomir !
), ce code ne fonctionne pas, j'ai réussi malgré tout a debugger deux Kdo, il me reste apparement un soucis conernant la routine qui appel la routine de tracé de ligne virtuel. Je me suis remotivé et c'est reparti !! 
GT En train de debugger !!