1

comment peut on faire un scrolling horizontal ???, je sais faire pour un vertical mais vu que memcpy copie les bytes du haut vers le bas (et gauche droite a chaque ligne), je vois pas trop comment faire confus

et comment peut-on faire aussi un double ou triple scrolling, c a d avec 2 ou 3 fond d'ecran qui defile a vitesse differente, vu que memcpy remplacerait a chaque fois tous les pixels (donc le background 1 serait effacer par le 2eme qui serait effacé par le 3eme) ??? (ou alors fo refaire une fonction memcpy perso ???

2

ben tu reaffiche tout a chaque fois
Y a deux fesses qui sont sur la plage et l'une dit à l'autre :
"Qu'est ce qu'on fait maintenant ?"
Et l'autre lui répond :
"Ben PROUT !!!"

3

sur 89 tu enregistre ta ligne dans une structure de 20 octets de long :

typedef unsigned long i20bytes[5];
i20bytes ligne;


et tu decale :

memcpy(&ligne,mem+30*c,20);
asm("lea (%0,18),%%a0;lsl.w (%%a0);roxl.w -(%%a0);roxl.w -(%%a0);roxl.w -(%%a0);roxl.w -(%%a0);roxl.w -(%%a0);roxl.w -(%%a0);roxl.w -(%%a0);roxl.w -(%%a0);roxl.w -(%%a0)"::"a"(ligne):"a0")
memcpy(mem+30*c,&ligne,20);



Merci Kevin Kofler smile

4

et en C ça donne quoi ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

5

oula j'ai pas tt compris au truc la !

6

C'est ça en C. Bien sûr, il y a un peu d'interface entre le C et l'ASM autour.
Regarde ExtGraph de Thomas Nussbaumer.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

7

On ne peut pas faire ce scrolling en C.. cause: la fonction roll n'a pas d'equivalence en C.. ce qui ne permet donc pas de founir un code potable (un truc du genre: >> puis << sur chaque long ce qui demanderai 30 fois plus de shift pour un scrolling pxl par pxl...)
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

8

y'a vraiment aucun moyen d'avoir 1 bon scroll sans passer par de l'asm ? sad
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

9

Il n'y a aucun moyen de le faire en C.
Routine d'ExtGraph:
//=============================================================================
// scrolls a specific number of lines of a LCD buffer (240x128) 1 column to the
// left (160 pixels gets shifted) ...
//
// NOTE: given buffer have to start on an even address otherwise function will
// crash !!!
//=============================================================================
void ScrollLeft160(unsigned short* buffer,unsigned short lines) {
register short* tmpbuffer = buffer;
register short tmplines = lines;
tmpbuffer += (tmplines<<4) - (tmplines);
tmplines--;
asm volatile (
"0:
sub.w #10,%0
lsl.w -(%0);roxl.w -(%0);roxl.w -(%0);roxl.w -(%0);roxl.w -(%0)
roxl.w -(%0);roxl.w -(%0);roxl.w -(%0);roxl.w -(%0);roxl.w -(%0)
dbra %1,0b"
: "=a" (tmpbuffer), "=d" (tmplines)
: "0" (tmpbuffer), "1" (tmplines));
}

Télécharge ExtGraph et le GCK de Thomas Nussbaumer.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

10

ben oui mais cest ce quon lui avait deja propose.... et ya de lasm...
Y a deux fesses qui sont sur la plage et l'une dit à l'autre :
"Qu'est ce qu'on fait maintenant ?"
Et l'autre lui répond :
"Ben PROUT !!!"

11

arf...
Si c'est pour faire scroller des sprites, laisse tomber le scrolling : efface tout l'écran, et réaffiche tout !
=> ça te permettra de faire scroller tes sprites à diférentes vitesses...
=> et ça sera plus rapide (sauf si tu as des centaines de sprites grin) : je suis passé du scrolling à cette technique pour Krypton... => j'ai gagané en vitesse (dans les 50% en gros !!!), et en pratique (scrolling différentiel)
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

12

mais comment est ce que tu scroll tes 3 background dans krypton ??? , tu les affiches les 3 avec une foncitons de sprite !?

et en fait, si c possible de scroller en pur C, la preuve >>>

(C) TM

void ScrollUpPseudoCode(unsigned char* buffer, short nr_lines) {
unsigned char* dest = buffer;
unsigned char* src = dest+30; // one line below dest
short act_line;
short i;

//-----------------------------------------------
// move nr_lines upwards ...
//-----------------------------------------------
for (act_line=0;act_line<nr_lines-1;act_line++) {
for (i=0;i<30;i++) *dest++ = *src++; // copy a complete line ...
}

//-----------------------------------------------
// clear last line
//-----------------------------------------------
for (i=0;i<30;i++) *dest++ = 0;
}

void ScrollRightPseudoCode(unsigned char* buffer, short nr_lines) {
short act_line;
short i;
unsigned char value;
unsigned char carry;

//-----------------------------------------------
// move nr_lines upwards ...
//-----------------------------------------------
for (act_line=0;act_line<nr_lines;act_line++) {
carry = 0;
for (i=0;i<30;i++) {
value = (*buffer >> 1) | carry;
if (*buffer & 0x01) carry = 0x80;
else carry = 0x00;
*buffer++ = value;
}
}
}

13

Bon en fait le principe est plutot simple pour un scroll differentielle, tu redessines tout a le fois: le premier plan le 2 le 3eme puis les decors et vaisseaux... cela peut semble asser lourd, mais avec de bonne routine c'est largement faisable...
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!