Dark Bit Factory &  Gravity
		PROGRAMMING => Freebasic => Topic started by: Shockwave on May 26, 2007
		
			
			- 
				Exe attached. Uses Rbraz's lib :) Thanks mate!
' By SW 2007
'-------------------------------------------------------------------------------
         OPTION STATIC
         OPTION EXPLICIT
        
        '#DEFINE  PTC_WIN
        #INCLUDE "TINYPTC.BI"
         
         CONST  XRES    =   800
         CONST  YRES    =   600
         
         DIM SHARED AS INTEGER HALFX  
         DIM SHARED AS INTEGER HALFY
         
         HALFX= XRES / 2
         HALFY= YRES / 2
'-------------------------------------------------------------------------------
    DIM SHARED AS UINTEGER BUFFER ( XRES * YRES )
    DIM SHARED FONT (64 * 91) as Uinteger : ' FONT BUFFER
    DIM SHARED AS UINTEGER MTRX( 8,8 )
'-------------------------------------------------------------------------------
' Vector Scroll Grid Definition;
'-------------------------------------------------------------------------------
    DIM SHARED AS DOUBLE SCALE = 15
    DIM SHARED AS UINTEGER VXRR,VYRR
    
    DIM SHARED AS UINTEGER XROW,YROW
    
    VXRR  =   75 :' X Points In Grid
    VYRR  =    9 :' Y Points In Grid
    XROW  = VXRR-1
    YROW  = VYRR-1
    
    DIM SHARED AS DOUBLE  GRDX  ( VXRR   *   VYRR ) : ' X Original Location.
    DIM SHARED AS DOUBLE  GRDY  ( VXRR   *   VYRR ) : ' Y Original Location.
    DIM SHARED AS DOUBLE  GRDZ  ( VXRR   *   VYRR ) : ' Z Original Location.
    DIM SHARED AS INTEGER GRIDON(    XROW,YROW    ) : ' Square Off / On.
    Dim shared as DOUBLE GTX   ( VXRR   *   VYRR ) : ' Transformed X.
    Dim shared as DOUBLE GTY   ( VXRR   *   VYRR ) : ' Transformed Y.
    Dim shared as DOUBLE GTZ   ( VXRR   *   VYRR ) : ' Transformed Y.
    DIM SHARED AS DOUBLE SCOFF
    DIM SHARED AS INTEGER MATRIX_LINE=1
    
    DIM SHARED AS INTEGER SCROLLPOINTER=1 
    DIM SHARED AS STRING  SCROLLER
    ' Scroller Modes;
    '{0} = Rotate Y Axis Only.
    '{1} = Rotate Z Axis Only.
    '{2} = Rotate X Axis Only.
    '{3} = Rotate X+Z.
    '{4} = Rotate Y+Z. 
    '{5} = Rotate Y+X.<- Default
    '{6} = Rotate X,Y,Z (Pattern 1).
    '{7} = Rotate X,Y,Z (Pattern 2).
    '{8} = Speed setting Fast.
    '{9} = Speed Setting Slow. <- Default!
    SCROLLER=         " {9} {0} "
    SCROLLER=SCROLLER+"ShOCKwaVE Presents ------ "
    SCROLLER=SCROLLER+"             {8} {3} A vector scroller!!!          "
    SCROLLER=SCROLLER+"  {7} Vector scrollers fucking rule!!!!              Hope that you like this.. Tata!!!           "
    DIM SHARED AS DOUBLE VRXR,VRYR,VRZR,VRXTT,VRYTT,VRZTT,SVRXR,SVRYR,SVRZR
    DIM SHARED AS DOUBLE TWATT1,TWATT2
    
    DIM SHARED AS INTEGER STARS = 400
    DIM SHARED AS DOUBLE  STRX  ( STARS ) : ' X Original Location.
    DIM SHARED AS DOUBLE  STRY  ( STARS ) : ' Y Original Location.
    DIM SHARED AS DOUBLE  STRZ  ( STARS ) : ' Z Original Location.
    DIM SHARED AS DOUBLE  STTX  ( STARS ) : ' Transformed X.
    DIM SHARED AS DOUBLE  STTY  ( STARS ) : ' Transformed Y.
    DIM SHARED AS DOUBLE  STTZ  ( STARS ) : ' Transformed Y.
    
    dim shared as uinteger scrollmode = 1
    dim shared as double scspeed = .25
    dim shared as double stspeed = 50
'-------------------------------------------------------------------------------
' Sub Definition
'-------------------------------------------------------------------------------
    DECLARE SUB SETUPGRID()
    DECLARE SUB DRAWNEW  ()
    DECLARE SUB FLAT_TRIANGLE(BYVAL X1 AS INTEGER , BYVAL Y1 AS INTEGER, BYVAL X2 AS INTEGER , BYVAL Y2 AS INTEGER , BYVAL X3 AS INTEGER, BYVAL Y3 AS INTEGER , BYVAL TC AS INTEGER)
    DECLARE SUB READFONT         ()
    DECLARE SUB TEXT             ( BYVAL WW AS STRING )  
    DECLARE SUB ROTATE      ()
    DECLARE SUB ROTATE_STARS()    
    DECLARE SUB DRAW_STARS1()
    DECLARE SUB DRAW_STARS2()
    DECLARE SUB SET_STARS()
    SETUPGRID()
    READFONT()
    SET_STARS()
'-------------------------------------------------------------------------------
' Open Screen
'-------------------------------------------------------------------------------
    IF (PTC_OPEN("+ UNLEASHED +",XRES,YRES)=0) THEN
    END-1
    END IF  
'-------------------------------------------------------------------------------
DIM SHARED AS DOUBLE TICKTIME,RATE
RATE=0
WHILE(1)
    
    TICKTIME=TIMER    
    SCALE=20
    ROTATE_STARS()
    DRAW_STARS1()
    DRAW_STARS2()
    DRAWNEW()
    PTC_UPDATE@BUFFER(0)
    ERASE BUFFER
    RATE=TIMER-TICKTIME
    
WEND
SUB SET_STARS()
    DIM A 
    FOR A=1 TO STARS
        STRX(A)=(RND(1)*5000)-2500
        STRY(A)=(RND(1)*5000)-2500
        STRZ(A)=(RND(1)*5000)-2500
    NEXT
END SUB
SUB DRAW_STARS1()
    DIM AS INTEGER A,TX,TY,TZ,CCC,TTZ
    
    FOR A=1 TO STARS
        TX=STTX(A)
        TY=STTY(A)
        TZ=STTZ(A)
        IF TX>0 AND TX<XRES-1 AND TY>1 AND TY<YRES-1 AND TZ>0 THEN
            CCC=RGB(TZ,TZ,TZ)
            BUFFER (TX +  (TY*XRES)) = &H7777AA
            BUFFER (TX + 1+(TY*XRES)) = &H555577
            BUFFER (TX - 1+ (TY*XRES)) = &H555577
            BUFFER (TX +  ((TY-1)*XRES)) = &H555577
            BUFFER (TX +  ((TY+1)*XRES)) = &H555577
        END IF
    
    
    NEXT
    
END SUB
SUB DRAW_STARS2()
    DIM AS INTEGER A,TX,TY,TZ,CCC,TTZ
    
    FOR A=1 TO STARS
        TX=STTX(A)
        TY=STTY(A)
        TZ=STTZ(A)
    
    IF TX>0 AND TX<XRES-1 AND TY>1 AND TY<YRES-1 AND TZ<0 THEN
            CCC=RGB(TZ,TZ,TZ)
            BUFFER (TX +  (TY*XRES)) = &HCCCCFF
            BUFFER (TX + 1+(TY*XRES)) = &Haaaaee
            BUFFER (TX - 1+ (TY*XRES)) = &Haaaaee
            BUFFER (TX +  ((TY-1)*XRES)) = &Haaaaee
            BUFFER (TX +  ((TY+1)*XRES)) = &Haaaaee
        END IF
    NEXT
    
END SUB
SUB ROTATE_STARS()
    DIM A
    
    dim ggh as double
    DIM VX1 AS DOUBLE
    dim VY1 AS DOUBLE 
    dim VZ1 AS DOUBLE
    
    DIM VZZ AS DOUBLE    
    dim vxx as double
    dim vyy as double
    
    DIM VDV AS DOUBLE
    ggh=(stspeed*rate)*50
'###############################################
'## Rotate And Scale Each Point! Store Result ##
'###############################################
 For a=1 To STARS
    VX1=STRX(a)
    VY1=STRY(a)    
    VZ1=STRZ(a)
    
'######################
'## X,Y,Z rotations! ##
'######################
  Vxx=Vx1
  Vyy=Vy1*cos(VRxr)+Vz1*sin(VRxr)
  Vzz=Vz1*cos(VRxr)-Vy1*sin(VRxr)
  
  Vy1=Vyy
  Vx1=Vxx*cos(VRyr)-Vzz*sin(VRyr)
  Vz1=Vxx*sin(VRyr)+Vzz*cos(VRyr)
  
  Vzz=Vz1
  Vxx=Vx1*cos(VRzr)-Vy1*sin(VRzr)
  Vyy=Vx1*sin(VRzr)+Vy1*cos(VRzr)
'########################
'## Apply Perspective! ##
'########################
  Vdv=(Vzz/80)+100
  Vxx=(SCALE*(Vxx/Vdv))+HALFX
  
  Vyy=(SCALE*(Vyy/Vdv))+HALFY
  
  STTX(a)=Int(Vxx)
  STTY(a)=Int(Vyy)
  STTZ(a)=Int(Vzz)
STRX(A)=STRX(A)+ggh
IF STRX(A)>2500 THEN STRX(A)=-STRX(A)
 Next 
END SUB
SUB ROTATE()
DIM A
DIM ARV AS DOUBLE
ARV=rate
    DIM VX1 AS DOUBLE
    dim VY1 AS DOUBLE 
    dim VZ1 AS DOUBLE
    
    DIM VZZ AS DOUBLE    
    dim vxx as double
    dim vyy as double
    
    DIM VDV AS DOUBLE
'###############################################
'## Rotate And Scale Each Point! Store Result ##
'###############################################
 For a=1 To (VXRR*VYRR)
    VX1=GRDX(a)+scoff
    VY1=GRDY(a)    
    VZ1=GRDZ(a)
    
'######################
'## X,Y,Z rotations! ##
'######################
  Vxx=Vx1
  Vyy=Vy1*cos(VRxr)+Vz1*sin(VRxr)
  Vzz=Vz1*cos(VRxr)-Vy1*sin(VRxr)
  
  Vy1=Vyy
  Vx1=Vxx*cos(VRyr)-Vzz*sin(VRyr)
  Vz1=Vxx*sin(VRyr)+Vzz*cos(VRyr)
  
  Vzz=Vz1
  Vxx=Vx1*cos(VRzr)-Vy1*sin(VRzr)
  Vyy=Vx1*sin(VRzr)+Vy1*cos(VRzr)
'########################
'## Apply Perspective! ##
'########################
  Vdv=(Vzz/60)+1
  Vxx=(SCALE*(Vxx/Vdv))+HALFX
  
  Vyy=(SCALE*(Vyy/Vdv))+HALFY
  
  GTX(a)=Int(Vxx)
  GTY(a)=Int(Vyy)
  GTZ(a)=Int(Vzz)
 Next 
    TWATT1=TWATT1+.0225
    TWATT2=TWATT2-.0415
    
    IF SCROLLMODE=1 THEN    
    VRYR=  VRYR+ARV
    SVRYR=  SVRYR+ARV
    VRXR = 0
    VRZR = 0
    END IF
    IF SCROLLMODE=2 THEN    
    VRZR =  VRZR+ARV
    SVRZR = SVRZR+ARV
    VRXR = 0
    VRYR = 0
    END IF
    IF SCROLLMODE=3 THEN    
    VRZR = 0
    VRXR = VRXR+ARV
    VRYR = 0
    END IF
    IF SCROLLMODE=4 THEN    
        
    VRZR =      VRZR+ARV
    VRXR =      VRXR+ARV
    
    SVRZR =      SVRZR+ARV
    
    VRYR =     0
    END IF
    IF SCROLLMODE=5 THEN    
    VRZR =    VRZR+ARV
    VRYR =    VRYR+ARV
    VRXR =    0
    
    SVRYR =    SVRYR+ARV
    SVRZR =    SVRZR+ARV
    END IF
    IF SCROLLMODE=6 THEN    
    VRZR =      0
    VRXR =      VRXR+ARV
    VRYR =      VRYR+ARV
    SVRYR =      SVRYR+ARV
    
    END IF
    IF SCROLLMODE=7 THEN    
    VRZR =      VRZR+ARV*2
    VRXR =      3.4*sin(twatt1/7)
    VRYR =      2.7*sin(twatt2/5)
    sVRZR =      sVRZR+(ARV*2)
    sVRYR =      1.7*sin(twatt2/5)
    END IF
    IF SCROLLMODE=8 THEN    
    VRZR =      1.6*sin(twatt1/3)
    VRXR =      VRXR+(ARV*2)
    VRYR =      2.6*sin(twatt2/9)
    SVRZR =      1.6*sin(twatt1/3)
    SVRYR =      2.6*sin(twatt2/9)
    END IF
END SUB
SUB DRAWNEW()
DIM AS INTEGER LP,TX,TY
'
' ROTATE HERE!
'
ROTATE()
DIM X AS INTEGER
DIM Y AS INTEGER
DIM AS INTEGER VX1,VX2,VY1,VY2,M,culv,NEG
DIM AS DOUBLE N
FOR Y=1 TO YROW
FOR X=1 TO XROW
        LP =    X+((Y-1)*VXRR)
        
        IF GRIDON(X,Y)=1 THEN
            
  vx1= Gtx(LP)-Gtx(LP+1)
  vy1= Gty(LP)-Gty(LP+1)
  vx2= Gtx(LP+VXRR)-Gtx(LP+1)
  vy2= Gty(LP+VXRR)-Gty(LP+1)
  n=  vx1*vy2-vx2*vy1           
  IF N<0 THEN
      N=-N
      NEG=0
    ELSE
      NEG=1
  END IF
  
  N=(N/2)
  M=INT(N)
  IF M>200 THEN M=200
  IF M<15 THEN M=15        
  IF NEG=0 THEN culv= rgb(M,M/(Y+3),M/(Y+2))
  IF NEG=1 THEN culv= rgb(M/(Y+3),M/(Y+2),M)
        FLAT_TRIANGLE (GTX(LP),GTY(LP) , GTX(LP+1),GTY(LP+1), GTX(LP+VXRR),GTY(LP+VXRR) , CULV)        
        FLAT_TRIANGLE (GTX(LP+1),GTY(LP+1) , GTX(LP+VXRR+1),GTY(LP+VXRR+1), GTX(LP+VXRR),GTY(LP+VXRR) ,  CULV )                
        END IF
    
NEXT        
NEXT
    
        
    
'NEXT
SCOFF=SCOFF-(rate*40)
IF SCOFF <-1 THEN 
FOR Y=1 TO YROW
FOR X=1 TO XROW-1
GRIDON(X,Y) = GRIDON(X+1,Y)
NEXT
GRIDON(X,Y)=MTRX(MATRIX_LINE,Y)
NEXT
    MATRIX_LINE = MATRIX_LINE+1
    
    IF MATRIX_LINE>8 THEN
        '
        ' NEW LETTER GOES IN HERE!
        '
        TEXT(MID(SCROLLER,SCROLLPOINTER,1))
        
        SCROLLPOINTER=SCROLLPOINTER+1
        IF (MID(SCROLLER,SCROLLPOINTER,3))="{0}" THEN 
            SCROLLMODE=1 
            SCROLLPOINTER=SCROLLPOINTER+3  
        END IF
        IF (MID(SCROLLER,SCROLLPOINTER,3))="{1}" THEN 
            SCROLLMODE=2 
            SCROLLPOINTER=SCROLLPOINTER+3  
        END IF
        IF (MID(SCROLLER,SCROLLPOINTER,3))="{2}" THEN 
            SCROLLMODE=3 
            SCROLLPOINTER=SCROLLPOINTER+3
        END IF
        
        IF (MID(SCROLLER,SCROLLPOINTER,3))="{3}" THEN 
            SCROLLMODE=4 
            SCROLLPOINTER=SCROLLPOINTER+3
        END IF
        
        IF (MID(SCROLLER,SCROLLPOINTER,3))="{4}" THEN 
            SCROLLMODE=5 
            SCROLLPOINTER=SCROLLPOINTER+3
        END IF
        
        IF (MID(SCROLLER,SCROLLPOINTER,3))="{5}" THEN 
            SCROLLMODE=6 
            SCROLLPOINTER=SCROLLPOINTER+3
        END IF
        IF (MID(SCROLLER,SCROLLPOINTER,3))="{6}" THEN 
            SCROLLMODE=7 
            SCROLLPOINTER=SCROLLPOINTER+3
        END IF
        IF (MID(SCROLLER,SCROLLPOINTER,3))="{7}" THEN 
            SCROLLMODE=8 
            SCROLLPOINTER=SCROLLPOINTER+3
        END IF
        IF (MID(SCROLLER,SCROLLPOINTER,3))="{8}" THEN 
            scspeed=4 
            stspeed=100            
            SCROLLPOINTER=SCROLLPOINTER+3
        END IF        
        IF (MID(SCROLLER,SCROLLPOINTER,3))="{9}" THEN 
            scspeed=2 
            stspeed=50            
            SCROLLPOINTER=SCROLLPOINTER+3
        END IF        
        IF SCROLLPOINTER>LEN(SCROLLER) THEN SCROLLPOINTER=1
        MATRIX_LINE=1
    END IF
    
    SCOFF=SCOFF+1
END IF
END SUB
'-------------------------------------------------------------------------------
' Set Up The Grid.
'-------------------------------------------------------------------------------
SUB SETUPGRID()
    
    DIM AS DOUBLE STX1,STY1,STX2,STY2
    DIM AS INTEGER LP
    
    STX1 =   (-( VXRR / 2 ))+.5
    STY1 =   -( VYRR / 2 )
    
    STX2 =    ( VXRR / 2 )+.5
    STY2 =    ( VYRR / 2 )
    FOR LP =1 TO ( VXRR * VYRR )
        
        
        GRDX (LP) = STX1
        GRDY (LP) = STY1
        GRDZ (LP) = 0
        
        STX1=STX1+1
        
        IF STX1 >= STX2 THEN
            
            STX1=STX1-VXRR
            STY1=STY1 +1
            
        END IF
        
    NEXT
    
    DIM AS INTEGER X,Y
    FOR Y=1 TO YROW
    FOR X=1 TO XROW
    
        
    GRIDON (X,Y) = 0
        
    NEXT
    NEXT
    
    
END SUB
SUB FLAT_TRIANGLE(BYVAL X1 AS INTEGER , BYVAL Y1 AS INTEGER, BYVAL X2 AS INTEGER , BYVAL Y2 AS INTEGER , BYVAL X3 AS INTEGER, BYVAL Y3 AS INTEGER , BYVAL TC AS INTEGER)
'-------------------------------------------------------------------------
' FLAT TRIANGLE RENDERER WITH ASSEMBLY LANGUAGE RASTERISING BY SHOCKWAVE ^ DBF ^ S!P 2006.
'-------------------------------------------------------------------------
'-------------------------------------------------------------------------
' WE NEED TO SORT THESE POINTS INTO ORDER FROM TOP TO BOTTOM, AN EXCHANGE SORT IS OK.
' AS WE ONLY HAVE GOT 3 POINTS TO ARRANGE.
'-------------------------------------------------------------------------
DIM AS INTEGER TEMPX,TEMPY,LO,LI 
                DIM AS INTEGER PX(3)
                DIM AS INTEGER PY(3)
                DIM TFLAG AS INTEGER
                dim pp as uinteger PTR
                DIM AS INTEGER IL1,IL2,SLICE
                TFLAG=0
        PX(1)= X1
        PX(2)= X2
        PX(3)= X3
        
        PY(1)= Y1
        PY(2)= Y2
        PY(3)= Y3
FOR LO = 1 TO 2
    FOR LI =1 TO 2      
        IF PY(LI+1) <= PY(LI) THEN
        TEMPX = PX(LI) : TEMPY = PY(LI)
        PX(LI) = PX(LI+1)
        PY(LI) = PY(LI+1)
        PX(LI+1) = TEMPX
        PY(LI+1) = TEMPY
        END IF    
    NEXT LI
NEXT LO
'   BOOT OUT INVISIBLE TRIANGLES!
    IF PX(1)<0 AND PX(2)<0  AND PX(3)< 0 THEN TFLAG=1
    IF PX(1)>XRES AND PX(2)>XRES  AND PX(3)>XRES THEN TFLAG=1
    IF PY(1)>YRES AND PY(2)>YRES  AND PY(3)>YRES THEN TFLAG=1
    
        DIM AS DOUBLE XP1,XP2:' SCREEN POSITIONS.
        DIM AS DOUBLE XI1,XI2:' INTERPOLATIONS.
        
'***
'*** REGULAR TRIANGLE (Y1<Y2 Y2<Y3)
'***
IF PY(1)<PY(2) AND PY(2)<PY(3) or (PY(2) = PY(3)) THEN
    TFLAG=1
XP1 = PX(1)
XP2 = PX(1)
XI1 = (PX(1)-PX(2)) / (PY(2) - PY(1))
XI2 = (PX(1)-PX(3)) / (PY(3) - PY(1))
FOR LO = PY(1) TO PY(2)-1
    
IF LO>=0 AND LO<YRES THEN 
    IF XP1<=XP2 THEN
        IL1=XP1
        IL2=XP2
    ELSE
        IL1=XP2
        IL2=XP1
    END IF
    
    IF IL2>XRES THEN IL2=XRES
    IF IL1<0 THEN IL1=0
    SLICE = IL2-IL1
    IF SLICE>0 THEN
    PP = @BUFFER(IL1+(LO*XRES))   
    asm
        mov eax,dword ptr[TC]
        mov ecx, [slice]
        mov edi, [PP]
        rep stosd
    end asm   
    END IF
    
END IF
XP1=XP1-XI1
XP2=XP2-XI2
NEXT
XI1 = (PX(2)-PX(3)) / (PY(3) - PY(2))
XP1 = PX(2)
FOR LO = PY(2) TO PY(3)
IF LO>=0 AND LO<YRES THEN 
    IF XP1<=XP2 THEN
        IL1=XP1
        IL2=XP2
    ELSE
        IL1=XP2
        IL2=XP1
    END IF
    IF IL2>XRES THEN IL2=XRES
    IF IL1<0 THEN IL1=0
    SLICE = IL2-IL1
    IF SLICE>0 THEN
    PP = @BUFFER(IL1+(LO*XRES))   
    asm
        mov eax,dword ptr[TC]
        mov ecx, [slice]
        mov edi, [PP]
        rep stosd
    end asm   
    END IF
END IF
XP1=XP1-XI1
XP2=XP2-XI2
NEXT
END IF
'***
'*** FLAT TOPPED TRIANGLE Y1=Y2
'***
IF TFLAG=0 AND PY(1) = PY(2) THEN
    
        TFLAG=1
        XP1 = PX(1)
        XP2 = PX(2)
        XI1 = (PX(1)-PX(3)) / (PY(3) - PY(1))
        XI2 = (PX(2)-PX(3)) / (PY(3) - PY(2))
FOR LO = PY(1) TO PY(3)
 IF LO>=0 AND LO<YRES THEN
    IF XP1<=XP2 THEN
        IL1=XP1
        IL2=XP2
    ELSE
        IL1=XP2
        IL2=XP1
    END IF
    
    IF IL2>XRES THEN IL2=XRES
    IF IL1<0 THEN IL1=0
    
    SLICE = IL2-IL1
    IF SLICE>0 THEN
    PP = @BUFFER(IL1+(LO*XRES))   
    asm
        mov eax,dword ptr[TC]
        mov ecx, [slice]
        mov edi, [PP]
        rep stosd
    end asm   
    END IF
END IF
    XP1=XP1-XI1
    XP2=XP2-XI2
NEXT
END IF
END SUB
sub TEXT(BYVAL WW AS STRING )
dim blx,bly as Uinteger
DIM as INTEGER TLP,TC,CH,TC2,TC3
    dim bm,mm
    
    
    CH = ASC(WW)-31
    IF CH<0 OR CH>91 THEN CH=0
    '---------------------------------
    'Calculate Offset In Font Data;---
    '---------------------------------
    bm=(ch*64)-64
    
    
    FOR BLY=0 TO 7   
    FOR BLX=1 TO 8
        '--------
        'Clip;---
        '--------                   
            '----------------------------------------------------
            'Draw Pixel In Buffer If Onscreen And If Binary 1 ---
            '----------------------------------------------------
            MM= FONT((((BLY)*8)+(BLX))+BM)                        
               ' IF MM >0 THEN 
                    MTRX(BLX,BLY+1) = MM
               ' end if
    NEXT
    NEXT
END SUB
SUB READFONT()
        dim lp
        FOR LP=1 TO (64*91)
                READ FONT(LP)
        NEXT
        
END SUB
'----------------------------------------------------------------
' FONT
'----------------------------------------------------------------
'space
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
'!
DATA 0,0,0,1,1,0,0,0
DATA 0,0,1,1,1,1,0,0
DATA 0,0,1,1,1,1,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,0,0,0,0,0
' "
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,1,1,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
' # 
DATA 0,1,1,0,1,1,0,0
DATA 0,1,1,0,1,1,0,0
DATA 1,1,1,1,1,1,1,0
DATA 0,1,1,0,1,1,0,0
DATA 1,1,1,1,1,1,1,0
DATA 0,1,1,0,1,1,0,0
DATA 0,1,1,0,1,1,0,0
DATA 0,0,0,0,0,0,0,0
' $ = £
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
' %
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
' & = O
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
' '
data 0,0,0,1,1,0,0,0
data 0,0,0,1,1,0,0,0
data 0,0,1,1,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
' (
DATA 0,0,0,1,1,1,0,0
DATA 0,0,1,1,0,0,0,0
DATA 0,0,1,1,0,0,0,0
DATA 0,0,1,1,0,0,0,0
DATA 0,0,1,1,0,0,0,0
DATA 0,0,1,1,0,0,0,0
DATA 0,0,0,1,1,1,0,0
DATA 0,0,0,0,0,0,0,0
' )
DATA 0,0,1,1,1,0,0,0
DATA 0,0,0,0,1,1,0,0
DATA 0,0,0,0,1,1,0,0
DATA 0,0,0,0,1,1,0,0
DATA 0,0,0,0,1,1,0,0
DATA 0,0,0,0,1,1,0,0
DATA 0,0,1,1,1,0,0,0
DATA 0,0,0,0,0,0,0,0
' *
DATA 0,0,0,0,0,0,0,0
DATA 0,1,1,0,1,1,0,0
DATA 0,0,1,1,1,0,0,0
DATA 1,1,1,1,1,1,1,0
DATA 0,0,1,1,1,0,0,0
DATA 0,1,1,0,1,1,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
' +
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,1,1,1,1,1,1,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
' ,
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,1,1,0,0,0,0
' -
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,1,1,1,1,1,1,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
' .
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,0,0,0,0,0
' /
DATA 0,0,0,0,0,0,1,0
DATA 0,0,0,0,0,1,1,0
DATA 0,0,0,0,1,1,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,1,1,0,0,0,0
DATA 0,1,1,0,0,0,0,0
DATA 0,1,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
'0
DATA 0,0,0,0,0,0,0,0
DATA 0,1,1,1,1,1,0,0
DATA 1,1,0,0,1,1,1,0
DATA 1,1,0,1,1,1,1,0
DATA 1,1,1,1,0,1,1,0
DATA 1,1,1,0,0,1,1,0
DATA 0,1,1,1,1,1,0,0
DATA 0,0,0,0,0,0,0,0
'1
DATA 0,0,0,1,1,0,0,0
DATA 0,0,1,1,1,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,1,1,1,1,0,0
DATA 0,0,0,0,0,0,0,0
'2
DATA 0,1,1,1,1,1,0,0
DATA 0,0,0,0,0,1,1,0
DATA 0,1,1,1,1,1,0,0
DATA 1,1,0,0,0,0,0,0
DATA 1,1,0,0,0,0,0,0
DATA 1,1,0,0,0,0,0,0
DATA 1,1,1,1,1,1,1,0
DATA 0,0,0,0,0,0,0,0
'3
DATA 1,1,1,1,1,1,1,0
DATA 0,0,0,0,0,1,1,0
DATA 0,0,0,1,1,1,0,0
DATA 0,0,0,0,0,1,1,0
DATA 0,0,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 0,1,1,1,1,1,0,0
DATA 0,0,0,0,0,0,0,0
'4
DATA 0,0,1,1,0,0,0,0
DATA 0,0,1,1,0,0,1,0
DATA 0,1,1,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,1,1,1,1,1,1
DATA 0,0,0,0,0,1,1,0
DATA 0,0,0,0,0,1,1,0
DATA 0,0,0,0,0,0,0,0
'5
DATA 1,1,1,1,1,1,1,0
DATA 1,1,0,0,0,0,0,0
DATA 1,1,1,1,1,1,0,0
DATA 0,0,0,0,0,1,1,0
DATA 0,0,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 0,1,1,1,1,1,0,0
DATA 0,0,0,0,0,0,0,0
'6
DATA 0,1,1,1,1,1,0,0
DATA 1,1,0,0,0,0,0,0
DATA 1,1,0,0,0,0,0,0
DATA 1,1,1,1,1,1,0,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 0,1,1,1,1,1,0,0
DATA 0,0,0,0,0,0,0,0
'7
DATA 1,1,1,1,1,1,1,0
DATA 0,0,0,0,0,1,1,0
DATA 0,0,0,0,1,1,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,1,1,0,0,0,0
DATA 0,0,1,1,0,0,0,0
DATA 0,0,1,1,0,0,0,0
DATA 0,0,0,0,0,0,0,0
'8
DATA 0,1,1,1,1,1,0,0
DATA 1,1,0,0,0,1,1,0
DATA 0,1,1,1,1,1,0,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 0,1,1,1,1,1,0,0
DATA 0,0,0,0,0,0,0,0
'9
DATA 0,1,1,1,1,1,0,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 0,1,1,1,1,1,1,0
DATA 0,0,0,0,0,1,1,0
DATA 0,0,0,0,1,1,0,0
DATA 0,0,0,0,0,0,0,0
' :
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
' ;
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
' <
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
' =
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,1,1,1,1,1,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,1,1,1,1,1,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
' >
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
' ?
DATA 0,0,0,1,1,1,0,0
DATA 0,0,1,1,0,1,1,0
DATA 0,0,0,0,0,1,1,0
DATA 0,0,0,0,1,1,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,0,0,0,0,0
' @
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
'[]\^_?@
'A
DATA 0,1,1,1,1,1,0,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,1,1,1,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 0,0,0,0,0,0,0,0
'B
DATA 1,1,1,1,1,0,0,0
DATA 1,1,0,0,1,0,0,0
DATA 1,1,1,1,1,1,0,0
DATA 1,1,0,0,0,1,0,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,1,1,1,1,0,0
DATA 0,0,0,0,0,0,0,0
'C
DATA 0,1,1,1,1,1,0,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,0,0,0
DATA 1,1,0,0,0,0,0,0
DATA 1,1,0,0,0,0,0,0
DATA 1,1,0,0,0,1,1,0
DATA 0,1,1,1,1,1,0,0
DATA 0,0,0,0,0,0,0,0
'D
DATA 1,1,1,1,1,0,0,0
DATA 1,1,0,0,1,1,0,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,1,1,1,1,0,0
DATA 0,0,0,0,0,0,0,0
'E
DATA 1,1,1,1,1,1,1,0
DATA 1,1,0,0,0,0,0,0
DATA 1,1,1,1,0,0,0,0
DATA 1,1,0,0,0,0,0,0
DATA 1,1,0,0,0,0,0,0
DATA 1,1,0,0,0,0,0,0
DATA 1,1,1,1,1,1,1,0
DATA 0,0,0,0,0,0,0,0
'F
DATA 1,1,1,1,1,1,1,0
DATA 1,1,0,0,0,0,0,0
DATA 1,1,1,1,1,0,0,0
DATA 1,1,0,0,0,0,0,0
DATA 1,1,0,0,0,0,0,0
DATA 1,1,0,0,0,0,0,0
DATA 1,1,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
'G
DATA 0,1,1,1,1,1,0,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,0,0,0
DATA 1,1,0,0,1,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 0,1,1,1,1,1,0,0
DATA 0,0,0,0,0,0,0,0
'H
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,1,1,1,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 0,0,0,0,0,0,0,0
'I
DATA 0,1,1,1,1,1,1,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,1,1,1,1,1,1,0
DATA 0,0,0,0,0,0,0,0
'J
DATA 0,0,0,1,1,1,1,0
DATA 0,0,0,0,0,1,1,0
DATA 0,0,0,0,0,1,1,0
DATA 0,0,0,0,0,1,1,0
DATA 0,0,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 0,1,1,1,1,1,0,0
DATA 0,0,0,0,0,0,0,0
'K
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,1,1,0,0
DATA 1,1,0,1,1,0,0,0
DATA 1,1,1,1,0,0,0,0
DATA 1,1,0,1,1,0,0,0
DATA 1,1,0,0,1,1,0,0
DATA 1,1,0,0,0,1,1,0
DATA 0,0,0,0,0,0,0,0
'L
DATA 1,1,0,0,0,0,0,0
DATA 1,1,0,0,0,0,0,0
DATA 1,1,0,0,0,0,0,0
DATA 1,1,0,0,0,0,0,0
DATA 1,1,0,0,0,0,0,0
DATA 1,1,0,0,0,0,0,0
DATA 1,1,1,1,1,1,1,0
DATA 0,0,0,0,0,0,0,0
'M
DATA 1,0,0,0,0,0,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,1,0,1,1,1,0
DATA 1,1,1,1,1,1,1,0
DATA 1,1,0,1,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 0,0,0,0,0,0,0,0
'N
DATA 1,1,0,0,0,1,1,0
DATA 1,1,1,0,0,1,1,0
DATA 1,1,1,1,0,1,1,0
DATA 1,1,0,1,1,1,1,0
DATA 1,1,0,0,1,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 0,0,0,0,0,0,0,0
'O
DATA 0,1,1,1,1,1,0,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 0,1,1,1,1,1,0,0
DATA 0,0,0,0,0,0,0,0
'P
DATA 1,1,1,1,1,1,0,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,1,1,1,1,0,0
DATA 1,1,0,0,0,0,0,0
DATA 1,1,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0
'Q
DATA 0,1,1,1,1,1,0,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,1,1,0,1,0
DATA 0,1,1,0,1,1,0,0
DATA 0,0,0,0,0,1,0,0
'R
DATA 1,1,1,1,1,1,0,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,1,1,1,1,0,0
DATA 1,1,0,1,1,0,0,0
DATA 1,1,0,0,1,1,0,0
DATA 1,1,0,0,0,1,1,0
DATA 0,0,0,0,0,0,0,0
'S
DATA 0,1,1,1,1,1,0,0
DATA 1,1,0,0,0,1,1,0
DATA 0,1,1,1,0,0,0,0
DATA 0,0,0,1,1,1,0,0
DATA 0,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 0,1,1,1,1,1,0,0
DATA 0,0,0,0,0,0,0,0
'T
DATA 0,1,1,1,1,1,1,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,0,0,0,0,0
'U
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 0,1,1,1,1,1,0,0
DATA 0,0,0,0,0,0,0,0
'V
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,1,1,0,0
DATA 1,1,0,1,1,0,0,0
DATA 0,1,1,1,0,0,0,0
DATA 0,0,0,0,0,0,0,0
'W
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,1,0,1,1,0
DATA 1,1,1,1,1,1,1,0
DATA 1,1,1,0,1,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 0,0,0,0,0,0,0,0
'x
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 0,1,1,0,1,1,0,0
DATA 0,0,1,1,1,0,0,0
DATA 0,1,1,0,1,1,0,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 0,0,0,0,0,0,0,0
'Y
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 0,1,1,1,1,1,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,0,0,0,0,0,0
'Z
DATA 1,1,1,1,1,1,1,0
DATA 1,1,0,0,0,1,1,0
DATA 0,0,0,0,1,1,0,0
DATA 0,0,0,1,1,0,0,0
DATA 0,0,1,1,0,0,0,0
DATA 0,1,1,0,0,1,1,0
DATA 1,1,1,1,1,1,1,0
DATA 0,0,0,0,0,0,0,0
'[
data 1,1,1,1,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,1,0,0,0,0
'\
data 1,1,0,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 0,1,1,1,0,0,0,0
data 0,0,1,1,1,0,0,0
data 0,0,0,1,1,1,0,0
data 0,0,0,0,1,1,1,0
data 0,0,0,0,0,1,1,1
data 0,0,0,0,0,0,1,1
']
data 0,0,0,0,1,1,1,1
data 0,0,0,0,0,1,1,1
data 0,0,0,0,0,1,1,1
data 0,0,0,0,0,1,1,1
data 0,0,0,0,0,1,1,1
data 0,0,0,0,0,1,1,1
data 0,0,0,0,0,1,1,1
data 0,0,0,0,1,1,1,1
'^
data 0,0,0,1,1,0,0,0
data 0,0,1,1,1,1,0,0
data 0,1,1,0,0,1,1,0
data 1,1,1,0,0,1,1,1
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
'_
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 1,1,1,1,1,1,1,1
data 0,0,0,0,0,0,0,0
' '
data 0,0,0,1,1,0,0,0
data 0,0,0,1,1,0,0,0
data 0,0,0,0,1,1,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
' a
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,1,1,1,1,0,0
data 0,0,0,0,0,1,1,0
data 0,1,1,1,1,1,1,0
data 1,1,0,0,0,1,1,0
data 0,1,1,1,1,1,1,0
data 0,0,0,0,0,0,0,0
' b
data 1,1,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0
data 1,1,1,1,1,1,0,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,0,1,1,0
data 1,1,1,1,1,1,0,0
data 0,0,0,0,0,0,0,0
' c
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,1,1,1,1,1,0,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,0,0,0,0
data 1,1,0,0,0,1,1,0
data 0,1,1,1,1,1,0,0
data 0,0,0,0,0,0,0,0
' d
data 0,0,0,0,0,1,1,0
data 0,0,0,0,0,1,1,0
data 0,1,1,1,1,1,1,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,0,1,1,0
data 0,1,1,1,1,1,1,0
data 0,0,0,0,0,0,0,0
' e
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,1,1,1,1,1,0,0
data 1,1,0,0,0,1,1,0
data 1,1,1,1,1,1,1,0
data 1,1,0,0,0,0,0,0
data 0,1,1,1,1,1,1,0
data 0,0,0,0,0,0,0,0
' f
data 0,0,1,1,1,1,0,0
data 0,1,1,0,0,0,0,0
data 0,1,1,0,0,0,0,0
data 0,1,1,1,1,0,0,0
data 0,1,1,0,0,0,0,0
data 0,1,1,0,0,0,0,0
data 0,1,1,0,0,0,0,0
data 0,1,1,0,0,0,0,0
' g
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,1,1,1,1,1,1,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,0,1,1,0
data 0,1,1,1,1,1,1,0
data 0,0,0,0,0,1,1,0
data 1,1,1,1,1,1,0,0
' h
data 1,1,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0
data 1,1,1,1,1,1,0,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,0,1,1,0
data 0,0,0,0,0,0,0,0
' i
data 0,0,0,1,1,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,1,1,0,0,0
data 0,0,0,1,1,0,0,0
data 0,0,0,1,1,0,0,0
data 0,0,0,1,1,0,0,0
data 0,0,1,1,1,1,0,0
data 0,0,0,0,0,0,0,0
' j 
data 0,0,0,0,1,1,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,1,1,0,0
data 0,0,0,0,1,1,0,0
data 0,0,0,0,1,1,0,0
data 0,0,0,0,1,1,0,0
data 1,1,0,0,1,1,0,0
data 0,1,1,1,1,0,0,0
' k
data 1,1,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,1,1,0,0
data 1,1,1,1,1,0,0,0
data 1,1,0,0,1,1,0,0
data 1,1,0,0,0,1,1,0
data 0,0,0,0,0,0,0,0
' l
data 0,1,1,0,0,0,0,0
data 0,1,1,0,0,0,0,0
data 0,1,1,0,0,0,0,0
data 0,1,1,0,0,0,0,0
data 0,1,1,0,0,0,0,0
data 0,1,1,0,0,0,0,0
data 0,0,1,1,1,1,0,0
data 0,0,0,0,0,0,0,0
' m
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 1,1,1,0,1,1,1,0
data 1,1,0,1,0,1,1,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,0,1,1,0
data 0,0,0,0,0,0,0,0
' n
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 1,1,1,1,1,1,0,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,0,1,1,0
data 0,0,0,0,0,0,0,0
' o
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,1,1,1,1,1,0,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,0,1,1,0
data 0,1,1,1,1,1,0,0
data 0,0,0,0,0,0,0,0
' p
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 1,1,1,1,1,1,0,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,0,1,1,0
data 1,1,1,1,1,1,0,0
data 1,1,0,0,0,0,0,0
' q
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,1,1,1,1,1,1,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,0,1,1,0
data 0,1,1,1,1,1,1,0
data 0,0,0,0,0,1,1,0
' r 
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 1,1,0,1,1,1,0,0
data 1,1,1,0,0,1,1,0
data 1,1,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
' s
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,1,1,1,1,1,1,0
data 1,1,0,0,0,0,0,0
data 0,1,1,1,1,1,0,0
data 0,0,0,0,0,1,1,0
data 1,1,1,1,1,1,0,0
data 0,0,0,0,0,0,0,0
' t
data 0,0,0,0,0,0,0,0
data 0,1,1,0,0,0,0,0
data 0,1,1,0,0,0,0,0
data 1,1,1,1,0,0,0,0
data 0,1,1,0,0,0,0,0
data 0,1,1,0,0,0,0,0
data 0,0,1,1,1,1,1,0
data 0,0,0,0,0,0,0,0
' u
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,0,1,1,0
data 0,1,1,1,1,1,0,0
data 0,0,0,0,0,0,0,0
' v
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,0,1,1,0
data 0,1,1,0,1,1,0,0
data 0,1,1,0,1,1,0,0
data 0,0,1,1,1,0,0,0
data 0,0,0,0,0,0,0,0
' w
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,0,1,1,0
data 1,1,0,1,0,1,1,0
data 1,1,1,1,1,1,1,0
data 0,1,1,0,1,1,0,0
data 0,0,0,0,0,0,0,0
' x
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 1,1,0,0,0,1,1,0
data 0,1,1,0,1,1,0,0
data 0,0,1,1,1,0,0,0
data 0,1,1,0,1,1,0,0
data 1,1,0,0,0,1,1,0
data 0,0,0,0,0,0,0,0
' y
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,0,1,1,0
data 1,1,0,0,0,1,1,0
data 0,1,1,1,1,1,1,0
data 0,0,0,0,0,1,1,0
data 1,1,1,1,1,1,0,0
' z
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 1,1,1,1,1,1,0,0
data 0,0,0,1,1,0,0,0
data 0,0,1,1,0,0,0,0
data 0,1,1,0,0,0,0,0
data 1,1,1,1,1,1,1,0
data 0,0,0,0,0,0,0,0
			 
			
			- 
				that one's really amazing ... coool oldskoolish feeling :)
Thanks for sharing the source as well :)
			 
			
			- 
				Not a problem :) I enjoy posting my listings here.
You might see it as a release for a group somewhere in the not too distant future, although it will be a little bit different by then :)
			 
			
			- 
				what can be said other than very cool!
			
 
			
			- 
				Just did a really small extension to your source and gave it some musaxxs - using the oldskool musaxxs engine library (unfortunately only as dll at the time writing) ... 
I have (once again) some difficults integrating the static lib with freebasic projects ... this time symbols are all there but it simply crashes at initialization - sigh - ...
Anyway ... I'm on it - as well as I'm on it to do some size optimizations ... :)
If you care, have fun using this library (although it's in beta state)
Cheers,
SLiPPY
			 
			
			- 
				Hehe, nice job, good luck in resourcing it into a static lib, I would definately use it if it was a little smaller and could be one-filed.
Karma +
			 
			
			- 
				Very nice Shock .. always something good from you :)
			
 
			
			- 
				awesome  :clap:
			
 
			
			- 
				Very nice. The movement is compelling and the shading on the quads is pleasing.
Chris
			 
			
			- 
				Nice starfeild and excellent timing for changing the text it all happens very smoothly
			
 
			
			- 
				Thanks guys, this will be released under the name of an alias, the intro is finished and I will post the full source as soon as it is used :)
			
 
			
			- 
				
hay shocky , it is amazing work.  :)
Sorry only the font that i did not like it , when you scale it.
  
			 
			
			- 
				Cheers Emil :)
Font is taken from a Melon Dezign intro btw.
			 
			
			- 
				it really is a cool demo!
hey shockwave ive been meaning to ask have you ever mapped a texture onto your binary font? i was thinking of trying it but i wanted to know if you ever had and how it looks.
i was thinking of making up a small collection of 8x8 textures for my resizable binary font so i could make it look like i had lots of diffrent fonts while still keeping exe size down.
			 
			
			- 
				That would be quite easy to do Nino, just precompute an 8*8 texture and when you are drawing that quad, just fetch the colour from the texture and draw the quad in that colour. Should look nice too :)
			
 
			
			- 
				yup thats what i was going to try, i think it should look quite good ill see what i can do later and ill post my findings up for the forum to have a look.
			
 
			
			- 
				Neat :)
			
 
			
			- 
				Nice one Shockwave & Slippy.