Accueil Ti-Gen Foire Aux Questions Chat sur le chan #tigcc sur IRC
Liste des membres Rechercher Aide
Bienvenue Invité !   Se connecter             Mes sujets   
Administrer
0 membre(s) et 1 visiteur(s) actif(s) durant les 5 dernières minutes Utilisateurs actifs : Aucun membre + 1 visiteur
Avant de poster sur le forum, il y a des régles de bases à respecter pour une bonne entente et un respect de tous.
Veuillez lire la charte du forum.
  :: Index » Forum Ti68K » Programmation C » Copie d'écran (4 réponse(s))
./POST DE DEPART (post n°0)   Marquer comme non lu.
Nul Ecrit le: Mercredi 13 juillet 2005 à 14:04 Déconnecté(e)    Voir le profil de Nul Envoyer un email à Nul Envoyer un message privé à Nul  

Salut !

Désolé de vous embêter encore avec ça mais j'ai toujours besoin de copier un écran de 240x128 dans un écran de 160x128 (en niveaux de gris). J'ai écrit quelque chose en C mais ce n'est pas très rapide:

void CopieVscreenToReal(void * src_0, void * src_1, void * dest_0, void * dest_1)
{
register short i, j;

register unsigned long * ptr_s0 = (unsigned long *)(src_0);
register unsigned long * ptr_s1 = (unsigned long *)(src_1);
register unsigned long * ptr_d0 = (unsigned long *)(dest_0);
register unsigned long * ptr_d1 = (unsigned long *)(dest_1);

for(i = 0; i < 128; i ++)
{
for(j = 0; j < 5; j ++)
{
*(ptr_d0 ++) = *(ptr_s0 ++);
*(ptr_d1 ++) = *(ptr_s1 ++);
}
(unsigned short *)ptr_s0 += 5;
(unsigned short *)ptr_s1 += 5;
(unsigned short *)ptr_d0 += 5;
(unsigned short *)ptr_d1 += 5;
}
}

Est-ce-que ce serait VRAIMENT plus rapide en ASM ?
"De tous les animaux, l'homme a le plus de pente,
A se porter dedans l'excès."

Jean de la Fontaine
    
./Post n°1   Marquer comme non lu.
Folco Ecrit le: Mercredi 13 juillet 2005 à 14:09 Déconnecté(e)    Voir le profil de Folco Envoyer un email à Folco Envoyer un message privé à Folco  


Une petite chose, sais-tu que sur une 89, l'écran en RAM fait effectivement 3840 octets? il est représenté en RAM de la même manière qu'un écran de 92/v200.
<<< Kernel Extremist©®™ >>>
Pas la peine d'aller là plus d'une fois tous les six mois...

"Il faut apprendre pour savoir qu'il faut apprendre pour savoir."
    
./Post n°2   Marquer comme non lu.
Nul Ecrit le: Mercredi 13 juillet 2005 à 14:17 Déconnecté(e)    Voir le profil de Nul Envoyer un email à Nul Envoyer un message privé à Nul  

Oui je sais mais j'ai besoin d'une telle fonction parce que l'écran de mon jeu fait 160x128: pour une TI-89 ça ne pose donc pas de problème mais pour une TI-92+ il faut "couper" à partir de 160.
J'ai essayé le code de Malcom Smith mais il n'est pas plus rapide:

static inline void CopyScreens89(void * src0, void * dest0, void * src1, void * dest1) {
asm volatile(
"movem.l %%d0-%%d5,-(%%sp);"\
"moveq #127,%%d0;"\
"0:;"\
"movem.l (%0)+,%%d1-%%d5;"\
"movem.l %%d1-%%d5,(%1);"\
"movem.l (%2)+,%%d1-%%d5;"\
"movem.l %%d1-%%d5,(%3);"\
"lea (%1,30),%1;"\
"adda.w #10,%0;"\
"lea (%3,30),%3;"\
"adda.w #10,%2;"\
"dbra %%d0,0b;"\
"movem.l (%%sp)+,%%d0-%%d5"
: "=a" (src0),"=a" (dest0),"=a" (src1),"=a" (dest1)
: "0" (src0),"1" (dest0),"2" (src1),"3" (dest1));
}

Il n'y a vraiment pas moyen d'optimiser tout ça ? #ouin#
"De tous les animaux, l'homme a le plus de pente,
A se porter dedans l'excès."

Jean de la Fontaine
    
./Post n°3   Marquer comme non lu.
Lionel Debroux Ecrit le: Mercredi 13 juillet 2005 à 14:27 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

Ben, non. La boucle n'étant pas particulièrement petite, la dérouler n'apporterait pas grand chose.
Lionel Debroux - membre de TICT.
    
./Post n°4   Marquer comme non lu.
Nul Ecrit le: Mercredi 13 juillet 2005 à 14:28 Déconnecté(e)    Voir le profil de Nul Envoyer un email à Nul Envoyer un message privé à Nul  

Bon, ben tant pis :s Merci quand même.
"De tous les animaux, l'homme a le plus de pente,
A se porter dedans l'excès."

Jean de la Fontaine
    
  :: Index » Forum Ti68K » Programmation C » Copie d'écran (4 réponse(s))
Pages : 1/1     « [1] » »|

.Répondre à ce sujet
Les boutons de code
[B]old[I]talic[U]nderline[S]trikethrough[L]ine Flip Hori[Z]ontallyFlip [V]erticallySha[D]ow[G]low[S]poilerCode [G][C]ite
Bullet [L]istList Item [K] Link [H][E]mail[P]icture SmileysHelp
Couleurs :
Saisissez votre message
Activer les smileys
     

Forum de Ti-Gen v3.0 Copyright ©2004 by Geoffrey ANNEHEIM
Webmaster: Kevin KOFLER, Content Admins: list, Server Admins: Tyler CASSIDY and Kevin KOFLER, DNS Admin: squalyl
Page générée en 63.08ms avec 18 requetes