Page 1 of 1

[ARM926EJ-S] Routine pour le scrolling

Unread postPosted: 20 Jan 2018, 17:23
by Ti64CLi++
Bonjour,
Je reviens avec une routine pour faire du scrolling.
Je ne vous donne que celle qui décale l'écran de façon horizontale, enfin, de gauche a droite.
Code: Select all
scrollv
    stmfd sp!, {r0-r12, lr}
    ;r1 -> décalage en nombre de fois
    mov r10, r1
    sub r10, r10, #1
scrollvloop
    mov r0, #0xC0000010
    ldr r0, [r0]
    mov r1, #320
    sub r1, r1, #1
    mov r2, #0
    adr r3, scrollsave
scrollvloop1
    mov r4, #0
    mov r5, #0
    add r5, r5, r2, lsl #1
    add r4, r4, r1, lsl #1
    add r4, r4, r2, lsl #9
    add r4, r4, r2, lsl #7
    ldrh r6, [r0, r4]
    strh r6, [r3, r5]
    add r2, r2, #1
    cmp r2, #240
    bllt scrollvloop1
    sub r1, r1, #1
scrollvloop2
    mov r2, #0
scrollvloop3
   mov r4, #0
   mov r5, #0
   add r6, r1, #1
   add r4, r4, r2, lsl #9
   add r4, r4, r2, lsl #7
   mov r5, r4
   add r4, r4, r1, lsl #1
   add r5, r5, r6, lsl #1
   ldrh r6, [r0, r4]
   strh r6, [r0, r5]
   add r2, r2, #1
   cmp r2, #240
   bllt scrollvloop3
   subs r1, r1, #1
   blpl scrollvloop2
   mov r2, #0
   adr r3, scrollsave
scrollvloop4
   mov r4, #0
   mov r5, #0
   add r5, r5, r2, lsl #1
   add r4, r4, r2, lsl #7
   add r4, r4, r2, lsl #9
   ldrh r6, [r3, r5]
   strh r6, [r0, r4]
   add r2, r2, #1
   cmp r2, #240
   bllt scrollvloop4
   subs r10, r10, #1
   blpl scrollvloop
   ldmfd sp!, {r0-r12, pc}

scrollsave
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0
    dcw 0,0,0,0,0,0,0,0,0,0

Le scrollsave me sert autant pour la routine verticale que horizontale, c'est pour cela qu'elle fait 320*2 octets.
Maintenant, je voudrais essayer de faire en sorte qu'elle prenne encore une fois, un parametre en r1, mais que si r1 est négatif, que ca fasse dans l'autre sens.
Et aussi, l'optimiser un max pour qu'elle soit (beaucoup) plus rapide :D
Voila, merci d'avance pour votre aide

Re: [ARM926EJ-S] Routine pour le scrolling

Unread postPosted: 24 Jan 2018, 17:26
by Ti64CLi++
Up

Re: [ARM926EJ-S] Routine pour le scrolling

Unread postPosted: 26 Jan 2018, 21:15
by Ti64CLi++
Up

Re: [ARM926EJ-S] Routine pour le scrolling

Unread postPosted: 28 Jan 2018, 16:59
by grosged
Oh, intéressant :)
Je ne me souviens plus trop, mais je suis sûr d'avoir procédé autrement... Faut que je retrouve ça ;)

Re: [ARM926EJ-S] Routine pour le scrolling

Unread postPosted: 28 Jan 2018, 17:01
by Ti64CLi++
Ca me serais utile, si tu pouvais retrouver. Parce que il faut que ce soit le plus rapide possible.
Je travaille en ce moment sur un très gros projet, et j'aurai grandement besoin de ton aide ;)

Re: [ARM926EJ-S] Routine pour le scrolling

Unread postPosted: 28 Jan 2018, 18:09
by grosged
Je ne retrouve plus les codes cources...Mais ce dont je suis sûr , c'est que j'utilisais le transfert/déplacement de données à coups de LDMia/STMia (par blocs constitués de 9 registres)

http://www.keil.com/support/man/docs/ar ... 153200.htm

Re: [ARM926EJ-S] Routine pour le scrolling

Unread postPosted: 28 Jan 2018, 18:14
by Ti64CLi++
Ok, je regarde, merci :)

Re: [ARM926EJ-S] Routine pour le scrolling

Unread postPosted: 28 Jan 2018, 18:17
by grosged
j'ai quand même uploadé ce qu'il me reste (c'est-à-dire l'exécutable)

archives_voir.php?id=1349057

Re: [ARM926EJ-S] Routine pour le scrolling

Unread postPosted: 28 Jan 2018, 18:18
by Ti64CLi++
Ok, je regarde, merci ;)