PicoMiteVGA DEMO


Author Message
javavi

Guru

Joined: 01/10/2023
Location: Ukraine
Posts: 571
Posted: 03:58pm 02 Apr 2025      

Diagonal Scrolling Clock

Const Mode.N=2
Const Font.N=1
Const T.Scale=4
Const T.Size=Len(Time$)
MODE  Mode.N
Const X.Res=MM.HRES,Y.Res=MM.VRES
Font  Font.N
Const X.FSize=MM.Info(FONTWIDTH)
Const Y.FSize=MM.Info(FONTHEIGHT)
Const X.Offset=X.FSize*T.Scale*T.Size\2
Const Y.Offset=Y.FSize*T.Scale\2
Dim integer X.Dir=1,Y.Dir=1
Dim integer X.Pos=MM.HRES\2,Y.Pos=MM.VRES\2
Dim integer FC,BC
Dim Clr(15)=(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)
Colour Map Clr(),Clr()
'=================================================
FRAMEBUFFER LAYER 0
FRAMEBUFFER WRITE L
Font 9
'------------------------------------------------
Do
If BC=0 Then
 BC=Int(Rnd*15)+1
 Colour Clr(BC)
 Print @(0,0);
 For n=1 To (X.Res\8)*(Y.Res\8)
   Print Chr$(32+Int(Rnd*3));
 Next
EndIf

If X.Dir=1 Then
 Blit READ  1, 0,0,1,MM.VRES
 Blit 1,0,0,0,MM.HRES-1,MM.VRES
 Blit Write 1, MM.HRES-1,0
Else
 Blit READ  1, MM.HRES-1,0,1,MM.VRES
 Blit 0,0,1,0,MM.HRES-1,MM.VRES
 Blit Write 1, 0,0
EndIf
Blit Close 1
If Y.Dir=1 Then
 Blit READ  1, 0,0,MM.HRES,1
 Blit 0,1,0,0,MM.HRES,MM.VRES-1
 Blit Write 1, 0,MM.VRES-1
Else
 Blit READ  1, 0,MM.VRES-1,MM.HRES,1
 Blit 0,0,0,1,MM.HRES,MM.VRES-1
 Blit Write 1, 0,0
EndIf
Blit Close 1
'------------------------------------------------
Pause 20
FRAMEBUFFER WRITE N
If FC=0 Then FC=Int(Rnd*15)+1
Text X.Pos,Y.Pos,Time$,"CM",Font.N,T.Scale,Clr(FC)
Inc X.Pos,X.Dir:Inc Y.Pos,Y.Dir
If X.Pos-X.Offset<0 Then X.Dir=1:FC=0
If X.Pos+X.Offset>MM.HRES Then X.Dir=-1:FC=0
If Y.Pos-Y.Offset<0 Then Y.Dir=1:BC=0
If Y.Pos+Y.Offset>MM.VRES Then Y.Dir=-1:BC=0
FRAMEBUFFER WRITE L
Loop While Inkey$=""
'================================================
DefineFont 9
04200808
80402010 08040201
01020408 10204080
08080808 08080808
End DefineFont