comme ci dessous,je suis obligé de remplir une grosse zonne de data pour reserver l espace de travail.
mais c 'est pas saint.
Code : Tout sélectionner
InitSprite()
InitKeyboard()
InitMouse()
OpenScreen(1024,768, 32, "")
StartDrawing(ScreenOutput())
addecr0 = DrawingBuffer()
StopDrawing()
FlipBuffers()
StartDrawing(ScreenOutput())
addecr1= DrawingBuffer()
StopDrawing()
addecr=addecr1
addd=?dat
addd1=?dat1
x1.f
z.l
coo.l
emp=1 ;amplitude de depart
negampli=-140 ;amplitude inferieur
posampli=140 ;amplitude superieur
decomp=0 ;vitesse
z=0
b=100
prem=0
posi=1
limite =posi*160
pause=1
zoom=10
ris=0
sauvss=0
deb1:
prem=0
x=150
y=500
a=0
x1=-150
y1=-150
effac:
MOV eax,00h
MOV ebx,00h
MOV edx,addecr
MOV ecx,170ffh
eff:
MOV [edx+ebx],eax
MOV [edx+ebx+4],eax
MOV [edx+ebx+8],eax
MOV [edx+ebx+12],eax
MOV [edx+ebx+16],eax
MOV [edx+ebx+20],eax
MOV [edx+ebx+24],eax
MOV [edx+ebx+28],eax
ADD ebx,32
LOOP l_eff
MOV eax,addd
MOV ecx,1500
MOV edx,0ffffffffh
zero1:
MOV [eax],edx
ADD eax,4
LOOP l_zero1
MOV eax,addd1
MOV ecx,1500
MOV edx,0h
zero2:
MOV [eax],edx
ADD eax,4
LOOP l_zero2
JMP l_dessin
top:
MOV eax,y
ADD eax,z
MOV coo,eax
MOV eax,x
ROL eax,2
MOV ris,eax
MOV eax,addd
ADD eax,ris
MOV edx,coo
CMP [eax],edx
JB l_pasaff1
JMP l_affplot0
pasaff1:
MOV eax,addd1
ADD eax,ris
MOV edx,coo
CMP [eax],edx
JA l_pasaff
affplot0:
MOV eax,addd1
ADD eax,ris
MOV edx,coo
CMP [eax],edx
JA l_affplot
MOV [eax],edx
affplot:
MOV eax,x
ROL eax,2
MOV edx,coo
ROL edx,8
ROL edx,4
ADD eax,edx
MOV esi,addecr
ADD esi,eax
MOV eax,000ff00h
MOV [esi],eax
pasaff:
CMP prem,0
JNE l_pasa0
MOV eax,addd1
ADD eax,ris
MOV edx,coo
MOV [eax],edx
pasa0:
MOV eax,addd
ADD eax,ris
MOV edx,coo
CMP [eax],edx
JB l_dessin
MOV [eax],edx
dessin:
x1=x1+0.5
z=((Sin(Sqr((x1*x1)+(y1*y1))/zoom)))*emp
INC x
MOV eax,760
ADD eax,a
CMP x,eax
JLE l_top
MOV b,0
MOV prem,1
MOV x,150
MOV eax,a
ADD eax,posi
MOV a,eax
SUB y,1
x1=-150
ADD y1,2
MOV eax,x
ADD eax,a
MOV x,eax
MOV eax,a
CMP eax,limite
JLE l_dessin
FlipBuffers()
MOV eax,addecr
CMP eax,addecr1
JNE l_flip
MOV eax,addecr0
MOV addecr,eax
JMP l_finflip
flip:
MOV eax,addecr1
MOV addecr,eax
finflip:
stopit:
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left)
posampli=posampli+1
negampli=negampli-1
emp=emp+1
EndIf
If KeyboardPushed(#PB_Key_Right)
posampli=posampli-1
negampli=negampli+1
emp=emp-1
EndIf
If KeyboardPushed(#PB_Key_Up)
zoom=zoom+1
EndIf
If KeyboardPushed(#PB_Key_Down)
zoom=zoom-1
EndIf
If KeyboardPushed(#PB_Key_Escape)
StopDrawing()
End
EndIf
If KeyboardPushed(#pb_key_a)
Goto stopit
EndIf
Goto deb1
!section '.data' Data readable writeable
dat:
! rd 1500
dat1:
! rd 1500
End