12Fermer14
xCeLfrLe 12/08/2012 à 16:14
ahh je commence à aimer ça smile
je crois que j'ai choppé le truc pour l’écran.
Bon j'imagine que le code qui suit est moche et ultra pas optimisé mais bon je débute et j'ai essayé de ne pas piocher du code à gauche et à droite pour comprendre ce que je fais.
Maintenant j'aimerais comprendre les différentes technique d'optimisation, j'ai déjà lu qu'il fallait remplacer les div et mul par des opérations binaires ?
INCLUDE "c:\dev\start.s" INCLUDE "c:\dev\cel_lib.s" ; sauve la resolution move.w #4,-(sp) trap #14 addq.l #2,sp move.w d0,old_res ; passe en basse resolution SET_RES #0 ; on recupere l'adresse de l'ecran move.w #2,-(sp) getphysbase trap #14 addq.l #2,SP movea.l d0,a0 ; a0 pointe l'ecran ; on efface l'ecran move.l d0,a1 move.l #7999,d1 ; taille de l'ecran clear move.l #0,(a1)+ dbra d1,clear START move.l #160,d0 ; d0 = X move.l #100,d1 ; d1 = Y move.b #%1000,d2 ; d2 = couleur = 8(#%1000=#8=bleu) ; Xeme colonne de la Yeme ligne ; 16px = 4words, 1ligne = 320px ; => 1ligne = 320/16px * 4words = 80words = 160bytes ; on se place a Y*160 debug mulu.w #160,d1 adda.w d1,a0 ; ecran point le debut de la Yeme ligne divu.w #16,d0 ; x/16 => d0(reste,quotient) move.w d0,d1 ; copie quotient dans d1 mulu.w #8,d1 ; quotient*8 car on se deplace en 4words(8bytes) adda.w d1,a0 ; ecran pointe sur 160*Y+(quotient*8) swap.w d0 ; on echange le reste avec le quotient lea tab,a2 ; adresse du tableau dans a2 mulu.w #2,d0 ; *2 car compteur en byte move.w 0(a2,d0.w),d3 ; mask dans d3 bit0 btst #0,d2 ; couleur bit0 beq bit1 eor d3,0(a0) bit1 btst #1,d2 ; couleur bit1 beq bit2 eor d3,2(a0) bit2 btst #2,d2 ; couleur bit2 beq bit3 eor d3,4(a0) bit3 btst #3,d2 ; couleur bit3 beq bit4 eor d3,6(a0) bit4 WAIT_KEY FIN SET_RES old_res r‚tabli l'ancienne res move.w #0,-(sp) trap #1 SECTION DATA old_res dc.w 0 tab dc.w %1000000000000000 dc.w %0100000000000000 dc.w %0010000000000000 dc.w %0001000000000000 dc.w %0000100000000000 dc.w %0000010000000000 dc.w %0000001000000000 dc.w %0000000100000000 dc.w %0000000010000000 dc.w %0000000001000000 dc.w %0000000000100000 dc.w %0000000000010000 dc.w %0000000000001000 dc.w %0000000000000100 dc.w %0000000000000010 dc.w %0000000000000001 SECTION BSS ds.l 256 PILE ds.l 1