ahh je commence à aimer ça
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