[e-anim] Blitter sprites
5 participants
GFA :: Programmation :: Graphismes
Page 1 sur 1
[e-anim] Blitter sprites
Avec l'aval de Shadow, je vais poster en anglais, enfin franglais comme ils disent .
D'une part parce que ce code est destiné à Thorn qui ne parle pas français et d'autre part parce qu'on ne sait jamais, des fois que ça serve à quelqu'un ... ^^'
Here is a generic sprite routine using blitter, don't expect too much, it's been written to be easily understood and editable, there's then much room for optimization (NFSR bit for example), but it's hopefully rock solid (compared to rc_copy) and I'd say quite fast compared to other ways to move sprites in GFA basic. ( wink Thomas )
Any bunch of code to improve it is welcome as well as constructive criticism and feedback.
It handles many sprites, size and location have to be on a 16 pixel boundary, you can choose which bitplanes you wanna move ( better know what you're doing if you have a background to restore).
It also restores background, two PROCEDURES allowing this, the one in the example is the fastest.
When using no background, call the erase procedure instead of restore procedure.
Feel free to ask any question regarding how to use it, even if I made it as obvious as possible I'll happily help if possible.
Pressing F1/F2 will switch on/off the cpu left before end of vbl ( blue is cpu time still avaible ).
I ripped XENON sprites and tiles so that it looks cool hehe (four 16*16 pix sprites plus the joystick controlable ship 32*22 pix, all 5 sprites restoring background and being masked and plotted on both 4 bitplanes )
[Vous devez être inscrit et connecté pour voir ce lien]
tomchi- Messages : 52
Date d'inscription : 15/09/2018
Age : 49
Atlantis, Jb et þorN aiment ce message
Re: [e-anim] Blitter sprites
Merci Tomchi , je risque de poser beaucoup de question pour comprendre comment cela fonctionne
ManuM- Messages : 171
Date d'inscription : 01/01/2018
Localisation : Loir et Cher
Jb et tomchi aiment ce message
Re: [e-anim] Blitter sprites
N'hésite pas, c'est pour ça que je l'ai postée sur le forum
tomchi- Messages : 52
Date d'inscription : 15/09/2018
Age : 49
Jb aime ce message
Re: [e-anim] Blitter sprites
Using the No Final Source Read bit trick revealed to be damn easy and saved around 16 scanlines of CPU time \o/
Doing the FOR NEXT stuff in the procedures rather than in the main loop, avoiding calling the procedures for each sprite, tho less flexible, also saved around 16 scanlines.
Still, what chews most time isn't the blits but the GFA code...
Doing the FOR NEXT stuff in the procedures rather than in the main loop, avoiding calling the procedures for each sprite, tho less flexible, also saved around 16 scanlines.
Still, what chews most time isn't the blits but the GFA code...
tomchi- Messages : 52
Date d'inscription : 15/09/2018
Age : 49
Jb aime ce message
Re: [e-anim] Blitter sprites
Merci Tomchi!
Allez qui s'y colle maintenant pour faire un shoot en GFA ?
Allez qui s'y colle maintenant pour faire un shoot en GFA ?
Re: [e-anim] Blitter sprites
Mmmmmmmm
petit problème avec le gfa il me dit
le programme n'est pas en gfa 3.0
alors que je suis en gfa 3.07
Maître tomchi peu tu nous dire en quel version du gfa es tu
petit problème avec le gfa il me dit
le programme n'est pas en gfa 3.0
alors que je suis en gfa 3.07
Maître tomchi peu tu nous dire en quel version du gfa es tu
Jb- Messages : 143
Date d'inscription : 25/03/2018
Age : 47
Localisation : Tantonville
Re: [e-anim] Blitter sprites
Une tite traduc via Google traduct:
Voici une routine générique de sprite utilisant blitter, ne vous attendez pas à trop, elle a été écrite pour être facilement comprise et modifiable, il y a alors beaucoup de place pour l'optimisation (bit NFSR par exemple), mais elle est, espérons-le, solide comme le rc_copy) et Je dirais assez rapide par rapport aux autres moyens de déplacer des sprites dans GFA Basic. (clin d'oeil Thomas Razz)
Tout paquet de code pour l'améliorer est le bienvenu, ainsi que des critiques et des commentaires constructifs.
Il gère de nombreux sprites, la taille et l'emplacement doivent être sur une limite de 16 pixels, vous pouvez choisir les bitplanes que vous souhaitez déplacer (mieux vaut savoir ce que vous faites si vous avez un arrière-plan à restaurer).
Il restaure également l'arrière-plan, deux PROCÉDURES le permettant, celle de l'exemple est la plus rapide.
Si vous n'utilisez pas d'arrière-plan, appelez la procédure d'effacement au lieu de la procédure de restauration.
N'hésitez pas à poser n'importe quelle question sur la façon de l'utiliser, même si je l'ai rendu aussi évident que possible, je serai heureux de vous aider si possible.
Appuyez sur F1 / F2 pour allumer / éteindre le processeur gauche avant la fin de vbl (le bleu est le temps du processeur toujours disponible).
J'ai déchiré les sprites et les tuiles XENON pour que ça ait l'air cool hehe Razz (quatre sprites 16 * 16 pix plus le vaisseau contrôlable par joystick 32 * 22 pix, les 5 sprites restaurant l'arrière-plan et étant masqués et tracés sur les deux 4 bitplanes)
Voici une routine générique de sprite utilisant blitter, ne vous attendez pas à trop, elle a été écrite pour être facilement comprise et modifiable, il y a alors beaucoup de place pour l'optimisation (bit NFSR par exemple), mais elle est, espérons-le, solide comme le rc_copy) et Je dirais assez rapide par rapport aux autres moyens de déplacer des sprites dans GFA Basic. (clin d'oeil Thomas Razz)
Tout paquet de code pour l'améliorer est le bienvenu, ainsi que des critiques et des commentaires constructifs.
Il gère de nombreux sprites, la taille et l'emplacement doivent être sur une limite de 16 pixels, vous pouvez choisir les bitplanes que vous souhaitez déplacer (mieux vaut savoir ce que vous faites si vous avez un arrière-plan à restaurer).
Il restaure également l'arrière-plan, deux PROCÉDURES le permettant, celle de l'exemple est la plus rapide.
Si vous n'utilisez pas d'arrière-plan, appelez la procédure d'effacement au lieu de la procédure de restauration.
N'hésitez pas à poser n'importe quelle question sur la façon de l'utiliser, même si je l'ai rendu aussi évident que possible, je serai heureux de vous aider si possible.
Appuyez sur F1 / F2 pour allumer / éteindre le processeur gauche avant la fin de vbl (le bleu est le temps du processeur toujours disponible).
J'ai déchiré les sprites et les tuiles XENON pour que ça ait l'air cool hehe Razz (quatre sprites 16 * 16 pix plus le vaisseau contrôlable par joystick 32 * 22 pix, les 5 sprites restaurant l'arrière-plan et étant masqués et tracés sur les deux 4 bitplanes)
Re: [e-anim] Blitter sprites
Jb a écrit:Mmmmmmmm
petit problème avec le gfa il me dit
le programme n'est pas en gfa 3.0
alors que je suis en gfa 3.07
Maître tomchi peu tu nous dire en quel version du gfa es tu
Essaye avec les GFA 3.5, ça fonctionne.
Re: [e-anim] Blitter sprites
ok je teste de suite
Jb- Messages : 143
Date d'inscription : 25/03/2018
Age : 47
Localisation : Tantonville
Re: [e-anim] Blitter sprites
yes ça fonctionne
maintenant essayons de comprendre comment le code fonctionne
maintenant essayons de comprendre comment le code fonctionne
Jb- Messages : 143
Date d'inscription : 25/03/2018
Age : 47
Localisation : Tantonville
Re: [e-anim] Blitter sprites
bon ok
je retourne apprendre la fonction PRINT
c 'est plus simple pour le moment
par contre je suis sur un jeux pong a 4 joueurs
apparemment il y as une fonction qui ce nomme SPRITE
qui as deja utiliser cette fonction car la vitesse de déplacement de ma boule varie avec les manettes
voila ce que j'ai trouver si quelqu'un pouvez m'éclairer
SPRITE A$,x,y[,mode][,mem]
CLS
A$=MKI$(0)+MKI$(0)+MKI$(&H0010)
FOR I=1 TO 16
A$=A$+MKI$(65535)
NEXT I
en faite je voudrais déplacer une petite boule le plus rapidement possible
pour le moment je le fait avec des rc_copy
ça fonctionne pas mal
mais la boule ralentie avec la valeur des manettes étendue du ste
je retourne apprendre la fonction PRINT
c 'est plus simple pour le moment
par contre je suis sur un jeux pong a 4 joueurs
apparemment il y as une fonction qui ce nomme SPRITE
qui as deja utiliser cette fonction car la vitesse de déplacement de ma boule varie avec les manettes
voila ce que j'ai trouver si quelqu'un pouvez m'éclairer
SPRITE A$,x,y[,mode][,mem]
CLS
A$=MKI$(0)+MKI$(0)+MKI$(&H0010)
FOR I=1 TO 16
A$=A$+MKI$(65535)
NEXT I
en faite je voudrais déplacer une petite boule le plus rapidement possible
pour le moment je le fait avec des rc_copy
ça fonctionne pas mal
mais la boule ralentie avec la valeur des manettes étendue du ste
Jb- Messages : 143
Date d'inscription : 25/03/2018
Age : 47
Localisation : Tantonville
Re: [e-anim] Blitter sprites
Tu peux aussi essayer avec l'éditeur de souris pour ce qui est du motif (balle)
Ou l'utiliser en tant que curseur de souris et la positionner avec SETMOUSE.
A tester . . .
Ou l'utiliser en tant que curseur de souris et la positionner avec SETMOUSE.
A tester . . .
Re: [e-anim] Blitter sprites
as oui ce sera peu etre tres rapide du coup
et me servir de la fonction SPRITE juste pour les raquette
et me servir de la fonction SPRITE juste pour les raquette
Jb- Messages : 143
Date d'inscription : 25/03/2018
Age : 47
Localisation : Tantonville
Sujets similaires
» Activation du blitter
» Programmation du BLITTER par ses registres
» TUTO Amateur 02 les SPRITES
» [ST MAG] Programmation avancée en gfa (IV) Sprites
» [ST MAG] Programmation avancée en gfa (III) Sprites
» Programmation du BLITTER par ses registres
» TUTO Amateur 02 les SPRITES
» [ST MAG] Programmation avancée en gfa (IV) Sprites
» [ST MAG] Programmation avancée en gfa (III) Sprites
GFA :: Programmation :: Graphismes
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum