I refresh all display for my scroll (and all other of my prg, i try to make 2D game at this moment)... But, i use .Png picture to brush and tiles, is it a good picture format? what is the speedest image format on Hollywood? IFF, Png, Jpg?
If i load Png picture, is it decompress at all display or is it decompress when is it load and save in memory?
Try this code, it is too slow on microAone when i load PNG picture for tiles and brush and i don't understand why?
Code: Select all
@SCREEN {Mode="Ask",Width=640, Height=480, depth=16}
SetFillStyle(#FILLCOLOR)
CreateBrush (1,32,32,$000000)
SelectBrush(1)
Polygon (0,0,{32,16,0,32,0,0},3,$FF0000)
EndSelect
CreateBrush (2,32,32,$000000)
SelectBrush(2)
Box (0,0,32,32,$00AA00)
EndSelect
CreateBrush (3,32,32,$000000)
SelectBrush(3)
Box (0,0,32,32,$555555)
EndSelect
CreateBrush (4,32,32,$000000)
SelectBrush(4)
Box (0,0,32,16,$00AA00)
Box (0,16,32,32,$555555)
EndSelect
CopyBrush (4,5)
RotateBrush(5,-90)
CopyBrush (4,6)
RotateBrush(6,90)
CopyBrush (4,7)
RotateBrush(7,180)
SetBrushTransparency(1,$000000)
Dim Circuit[30][30]
Circuit[0]={2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}
Circuit[1]={2,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,2}
Circuit[2]={2,6,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,2}
Circuit[3]={2,6,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,2}
Circuit[4]={2,6,3,3,2,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,2,3,3,5,2}
Circuit[5]={2,6,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,3,3,5,2}
Circuit[6]={2,6,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,3,3,5,2}
Circuit[7]={2,6,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,3,3,5,2}
Circuit[8]={2,6,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,3,3,5,2}
Circuit[9]={2,6,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,3,3,5,2}
Circuit[10]={2,6,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,3,3,5,2}
Circuit[11]={2,6,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,3,3,5,2}
Circuit[12]={2,6,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,3,3,5,2}
Circuit[13]={2,6,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,3,3,5,2}
Circuit[14]={2,6,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,3,3,5,2}
Circuit[15]={2,6,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,3,3,5,2}
Circuit[16]={2,6,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,3,3,5,2}
Circuit[17]={2,6,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,3,3,5,2}
Circuit[18]={2,6,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,3,3,5,2}
Circuit[19]={2,6,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,3,3,5,2}
Circuit[20]={2,6,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,3,3,5,2}
Circuit[21]={2,6,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,3,3,5,2}
Circuit[22]={2,6,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,3,3,5,2}
Circuit[23]={2,6,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,3,3,5,2}
Circuit[24]={2,6,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,3,3,5,2}
Circuit[25]={2,6,3,3,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,3,3,5,2}
Circuit[26]={2,6,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,2}
Circuit[27]={2,6,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,2}
Circuit[28]={2,2,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,2,2}
Circuit[29]={2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}
X=0
Y=0
Angle=0
vitesse=0
XVoiture=320
YVoiture=240
Voiture = 1
SetFontStyle(#EDGE, #BLACK, 1)
Function supercar()
StartTimer(1)
Flip
Local Avance = IsKeyDown("UP")
Local Recule = IsKeyDown("Down")
Local Droite = IsKeyDown("RIGHT")
Local Gauche = IsKeyDown("LEFT")
Local ToucheA = IsKeyDown("a")
Local ToucheB = IsKeyDown("z")
If Avance = True
Vitesse=vitesse+0.5
If vitesse>6 Then vitesse=6
Else
If vitesse>0 Then vitesse=vitesse-0.3
EndIf
If Recule = True
Vitesse=vitesse-1
If vitesse<-3 Then vitesse=-3
Else
If vitesse<0 Then vitesse=vitesse+0.2
EndIf
If vitesse>0 And vitesse<0.1 Then vitesse=0
Radians=Angle*0.01745
If XVoiture=320 Then X=X+Cos(Radians)*vitesse
If YVoiture=240 Then Y=Y-Sin(Radians)*vitesse
;Blocage du scroll
If x>320 Then X=320
If X=320
XVoiture=Xvoiture+Cos(Radians)*vitesse
If XVoiture>600 Then XVoiture=600
If XVoiture<320 Then XVoiture=320
EndIf
If X<0 Then X=0
If X=0
XVoiture=Xvoiture+Cos(Radians)*vitesse
If XVoiture<40 Then XVoiture=40
If XVoiture>320 Then XVoiture=320
EndIf
If Y<0 Then Y=0
If Y=0
YVoiture=Yvoiture-Sin(Radians)*vitesse
If YVoiture<40 Then YVoiture=40
If YVoiture>240 Then YVoiture=240
EndIf
If Y>(29*32)/2 Then Y=(29*32)/2
If Y=(29*32)/2
YVoiture=Yvoiture-Sin(Radians)*vitesse
If YVoiture>440 Then YVoiture=440
If YVoiture<240 Then YVoiture=240
EndIf
; Si la voiture ne roule pas, elle ne tourne pas
If vitesse<>0
If Droite = True Then Angle=Angle-2
If Gauche = True Then Angle=Angle+2
EndIf
Local ViewXOffset=ViewXOffset+X
Local ViewYOffset=ViewYOffset+Y
If ViewXOffset<0
ViewXOffset=0
Else
If ViewXOffset>29 Then ViewXoffset=29
EndIf
If ViewYOffset<0
ViewYOffset=0
Else
If ViewYOffset>29 Then ViewYoffset=29
EndIf
scrolling()
TextOut(0,0,"speed : ")
TextOut(80,0,Round(Abs(vitesse*10)))
TextOut(110,0,"Km/h")
DisplayBrush(voiture,XVoiture,YVoiture,{AnchorX = 0.5, AnchorY = 0.5,rotate=Angle})
Local Temps=GetTimer(1)
TextOut (350,1,"Number of picture by second",#BLUE)
TextOut (586,1,Round((1/Temps)*1000))
EndFunction
Function scrolling()
Local TileX=Int(X/32)
Local TileY=Int(Y/32)
If TileX<0 Then TileX=0
If tileX>9 Then TileX=9
If TileY<0 Then TileY=0
If tileY>14 Then TileY=14
For Local RowCtr=TileY To 15+TileY
For Local ColCtr=tileX To 20+tileX
Local TileNum=Circuit[RowCtr][ColCtr]
Local TilePointX=(ColCtr*32)-X
Local TilePointY=(RowCtr*32)-Y
DisplayBrush(TileNum,TilePointX,TilePointY)
Next
Next
EndFunction
SetInterval (1,supercar,20)
BeginDoubleBuffer
Repeat
WaitEvent
Forever