Page 1 of 3

[TUTO][AXE] Nouvelle methode de scrolling d'image en axe.

Unread postPosted: 28 Oct 2012, 21:08
by nikitouzz
Matref a fait un tuto similaire : http://espace-ti.forumactif.com/t698-ax ... nd-d-ecran ( les deux sont autant valables l'un que l'autre )

Nous allons donc voir comment faire pour faire défiler l’écran en copiant non octet par octet mais bit par bit...

1) Nous allons tout d'abord absorber l'image enregistrée dans la calculatrice :
Code: Select all
:[pic0]->pic1
:dispgraph(pic1)



2) Il faut enregistrer l'état du premier bit de chaque ligne dans une liste :
Code: Select all
:0->r1
:for(64)
:({r1*12+L6}e0)->{r1+select(r1,+1->r1)}
:End


3) Ensuite on va tout simplement décaler le buffer d'un pixel :
Code: Select all
:horizontal -


4) Il faut donc ensuite copier l’état des bits enregistrés dans la liste L1 de l'autre côté :
Code: Select all
:0->r1
:for(64)
:{r1+L1}?{r1*12+11+L6->r2} or 1->{r2}
:r1++
:End


Ce qui nous donne en code final pour le scrolling de droite à gauche :
Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
:[pic0]->pic1
:dispgraph(pic1)
:while 1
:0->r1
:for(64)
:({r1*12+L6}e0=1)->{r1+select(r1,+1->r1)}
:End
:horizontal -
:0->r1
:for(64)
:{r1+L1}=1?{r1*12+11+L6->r2} or 1->{r2}
:r1++
:End
:EndIf getkey


de gauche à droite :

Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
:[pic0]->pic1
:dispgraph(pic1)
:while 1
:0->r1
:for(64)
:({r1*12+11+L6}e4=1)->{L1+select(r1,+1->r1)}
:End
:horizontal +
:0->r1
:for(64)
:{r1+L1}=1?{r1*12+L6->r2} or 128->{r2}
:r1++
:End
:EndIf getkey


De bas en haut :

Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
:[pic0]->pic1
:dispgraph(pic1)
:while 1
:0->r1
:for(12)
:{R1+L6}->{L1+select(r1,+1->r1)}
:End
:vertical -
:0->r1
:for(12)
:{r1+L1}->{select(r1,+1->r1)+744+L6}
:End
:EndIf getkey


De haut en bas :

Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
:[pic0]->pic1
:dispgraph(pic1)
:while 1
:dispgraph
:0->r1
:for(12)
:{r1+744+L6}->{L1+select(r1,+1->r1)}
:End
:vertical +
:0->r1
:for(12)
:{r1+L1}->{select(r1,+1->r1)+L6}
:End
:EndIf getkey


Enjoy ;)

Re: [AXE] nouvelle methode de scrolling d'image en axe.

Unread postPosted: 29 Oct 2012, 08:05
by Hayleia
http://www.omnimaga.org/index.php?topic ... #msg229323
Image
Et bim, Runer112 fait du scrolling dans tous les sens que tu veux 20 fois plus vite que Matref et toi réunis :P
_____________
Plus sérieusement, il y a un truc que j'ai pas compris du tout dans vos deux tutoriels. Et vous le faites tous les deux en plus.

Vous utilisez deux boucles for:
-une pour sauvegarde une ligne/colonne de pixels avant de scroller
-l'autre pour restaurer cette ligne/colonne de pixels après avoir scrollé

Mais je vous rappelle que vous avez votre image entière dans votre mémoire, au pointeur Pic1. La première boucle for est donc inutile, il suffit d'arranger la deuxième pour qu'elle aille chercher les pixels qu'ils lui faut dans l'image elle même.
_____________
Un autre truc que j'ai pas compris, mais là, il n'y a que toi qui le fait. Pourquoi tu essaie de désarchiver Pic0 (en le mettant entre crochets en plus) avant de l'absorber dans le programme ??? Ça sert à rien et je crois même que ça marche pas.

nikitouzz wrote:Sa méthode est très bonne et valable pour un simple fond d’écran qui défile, cependant si on veut l'inclure dans un jeu on se rends vite compte d'un bug avec le scrolling horizontal... en effet la methode de matreffeytontias pour faire defilez l'ecran verticalement est tres bien et valable, mais celle pour le scrolling horizontal de va pas du tout car il copie l'octets entier qu'il veut copier de l'autre coter de l'ecran ce qui cree des incompatibilitee.

Non, il copie l'octet entier dans L1 lors de sa première boucle mais dans la deuxième, il ne replace qu'un bit sur l'écran, pas tout l'octet.

Re: [AXE] nouvelle methode de scrolling d'image en axe.

Unread postPosted: 29 Oct 2012, 09:36
by nikitouzz
Ce tutoriel est destiné aux débutants.

1) Le code de Runer est bien plus compliqué pour des débutants et il est pas du tout facile a comprendre
2) Je te confirme que le code de matref met en jeu un octet entier ce qui gène le bon déroulement des programmes dans CERTAINES situations.
3) Je tente de désarchiver l'image car un débutant qui copiera ce code verra le code marcher que l'image soit archivée ou pas, et ce code marche : les crochets sont utiles ici.

DONC CONCLUSION :

Mon code marche et qui plus est dans tous les cas...

Re: [AXE] nouvelle methode de scrolling d'image en axe.

Unread postPosted: 29 Oct 2012, 09:50
by Hayleia
nikitouzz wrote:et bien hayleia si tu veux faire un nouveaux tutoriel ( je te signale que celui de runer112 n'est pas valable pour debutant et ce tuto est visé au debutant ) va y je ne te retiens pas ;)

Non mais le code de Runer je l'ai mis pour rigoler :p

nikitouzz wrote:quand au crocht, hayleia c'est pour desarchiver une image qui se trouve dans la calculatrice je pensais que tu connaissais ceci.... et je tente de la desarchiver car un debutant qui aura copier ce code au moins sa marcheras pour toute les situations.... si l'image n'est pas desarchiver sa va cree une erreur...

Si l'image n'est pas désarchivée ça ne change rien du tout. L'Axe peut absorber une image archivée donc ça ne sert à rien de la désarchiver avant, surtout pour la réarchiver après, ça fait juste perdre du temps lors de la compilation.

Mais est-ce que tu as lu ça:
Hayleia wrote:Vous utilisez deux boucles for:
-une pour sauvegarde une ligne/colonne de pixels avant de scroller
-l'autre pour restaurer cette ligne/colonne de pixels après avoir scrollé

Mais je vous rappelle que vous avez votre image entière dans votre mémoire, au pointeur Pic1. La première boucle for est donc inutile, il suffit d'arranger la deuxième pour qu'elle aille chercher les pixels qu'ils lui faut dans l'image elle même.

Ça n'était pas en rapport avec le code de Runer, c'était une amélioration de votre code (à Matref et toi) qui peut très bien être comprise par des débutants.

Re: [AXE] nouvelle methode de scrolling d'image en axe.

Unread postPosted: 29 Oct 2012, 09:53
by nikitouzz
je te l'accorde pour le scrolling de bas en haut ou l'inverse sa irait bien, mais pour le scrolling de gauche a droite ou de droite a gauche sa serait plus lours que cette methode mais je te promet d'y jeter un coup d'oeil ;)
j'ai corrigé le reste sinon ;)

Re: [AXE] nouvelle methode de scrolling d'image en axe.

Unread postPosted: 29 Oct 2012, 09:59
by Hayleia
nikitouzz wrote:je te l'accorde pour le scrolling de bas en haut ou l'inverse sa irait bien, mais pour le scrolling de gauche a droite ou de droite a gauche sa serait plus lours que cette methode mais je te promet d'y jeter un coup d'oeil ;)
j'ai corrigé le reste sinon ;)

Au contraire, ça marche beaucoup mieux pour le scrolling horizontal que pour le scrolling vertical puisque pour le scrolling horizontal tu dois dans tous les cas chercher des pixels (en colonne) donc tant qu'à faire, ne faire qu'une boucle cherchant des pixels; alors que pour le scrolling horizontal, il est beaucoup plus rapide de chercher des octets, donc plus rapide d'utiliser une méthode améliorée de la votre (au lieu de mettre deux boucles for, on met deux Copy).

Je sais que ça marche bien en horizontal, c'est ce que j'ai utilisé dans Rainbow Dash Attack:
Image
(note que je pouvais le faire scroller beaucoup plus rapidement).

Re: [AXE] nouvelle methode de scrolling d'image en axe.

Unread postPosted: 29 Oct 2012, 11:00
by nikitouzz
oui sa marche je SAIS ^^ mais sa crée des bugs lorsque parallelement on s'occupe des pixels du buffer scroller, comme la methode de matrer, elle marche mais elle crée des bug dans CERTAIN cas ^^

Re: [AXE] nouvelle methode de scrolling d'image en axe.

Unread postPosted: 29 Oct 2012, 12:50
by Hayleia
nikitouzz wrote:oui sa marche je SAIS ^^ mais sa crée des bugs lorsque parallelement on s'occupe des pixels du buffer scroller, comme la methode de matrer, elle marche mais elle crée des bug dans CERTAIN cas ^^

Quels bugs ?
Bon, avec ma méthode, toute modification faite sur le buffer est annulée lors du prochain tour (c'est comme ça que tu vois le score s'afficher et qu'au bout d'un tour il y a pas un bordel à droite) mais ça peut être un avantage ou un inconvénient. Dans mon cas ça m'arrange.
Mais j'ai jamais eu de bugs en tout cas. :quest:

Re: [AXE] nouvelle methode de scrolling d'image en axe.

Unread postPosted: 29 Oct 2012, 19:31
by nikitouzz
Donc enfaite matref avait fait une erreur de frappe dans son tuto, ce qui rendais le code totalement faux, j'ai donc corriger mon tuto en disant que les deux etait aussi valable l'un que l'autre.

et moin justement je veux faire des modifications sur le buffer pour mon jeu ;)

Re: [AXE] nouvelle methode de scrolling d'image en axe.

Unread postPosted: 30 Oct 2012, 07:55
by Hayleia
nikitouzz wrote:et moin justement je veux faire des modifications sur le buffer pour mon jeu ;)

Ah, dans ce cas, oublie tout ce que j'ai dit :D