Author Topic: Filled Vector Scroller and starfield.  (Read 5431 times)

0 Members and 1 Guest are viewing this topic.

Offline Shockwave

  • good/evil
  • Founder Member
  • DBF Aficionado
  • ********
  • Posts: 17394
  • Karma: 498
  • evil/good
    • View Profile
    • My Homepage
Filled Vector Scroller and starfield.
« on: May 26, 2007 »
Exe attached. Uses Rbraz's lib :) Thanks mate!

Code: [Select]
' 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

Shockwave ^ Codigos
Challenge Trophies Won:

Offline slippy

  • Atari ST
  • ***
  • Posts: 172
  • Karma: 42
    • View Profile
Re: Filled Vector Scroller and starfield.
« Reply #1 on: May 26, 2007 »
that one's really amazing ... coool oldskoolish feeling :)

Thanks for sharing the source as well :)


Offline Shockwave

  • good/evil
  • Founder Member
  • DBF Aficionado
  • ********
  • Posts: 17394
  • Karma: 498
  • evil/good
    • View Profile
    • My Homepage
Re: Filled Vector Scroller and starfield.
« Reply #2 on: May 26, 2007 »
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 :)
Shockwave ^ Codigos
Challenge Trophies Won:

Offline ninogenio

  • Pentium
  • *****
  • Posts: 1668
  • Karma: 133
    • View Profile
Re: Filled Vector Scroller and starfield.
« Reply #3 on: May 26, 2007 »
what can be said other than very cool!
Challenge Trophies Won:

Offline slippy

  • Atari ST
  • ***
  • Posts: 172
  • Karma: 42
    • View Profile
Re: Filled Vector Scroller and starfield.
« Reply #4 on: May 26, 2007 »
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

Offline Shockwave

  • good/evil
  • Founder Member
  • DBF Aficionado
  • ********
  • Posts: 17394
  • Karma: 498
  • evil/good
    • View Profile
    • My Homepage
Re: Filled Vector Scroller and starfield.
« Reply #5 on: May 27, 2007 »
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 +
Shockwave ^ Codigos
Challenge Trophies Won:

Offline CoDeMaN

  • Atari ST
  • ***
  • Posts: 127
  • Karma: 38
    • View Profile
Re: Filled Vector Scroller and starfield.
« Reply #6 on: May 27, 2007 »
Very nice Shock .. always something good from you :)

Offline Rbz

  • Founder Member
  • DBF Aficionado
  • ********
  • Posts: 2750
  • Karma: 493
    • View Profile
    • http://www.rbraz.com/
Re: Filled Vector Scroller and starfield.
« Reply #7 on: May 27, 2007 »
awesome  :clap:
Challenge Trophies Won:

Offline taj

  • Bytes hurt
  • DBF Aficionado
  • ******
  • Posts: 4810
  • Karma: 189
  • Scene there, done that.
    • View Profile
Re: Filled Vector Scroller and starfield.
« Reply #8 on: May 27, 2007 »
Very nice. The movement is compelling and the shading on the quads is pleasing.

Chris
Challenge Trophies Won:

Offline rain_storm

  • Here comes the Rain
  • DBF Aficionado
  • ******
  • Posts: 3088
  • Karma: 182
  • Rain never hurt nobody
    • View Profile
    • org_100h
Re: Filled Vector Scroller and starfield.
« Reply #9 on: May 27, 2007 »
Nice starfeild and excellent timing for changing the text it all happens very smoothly

Challenge Trophies Won:

Offline Shockwave

  • good/evil
  • Founder Member
  • DBF Aficionado
  • ********
  • Posts: 17394
  • Karma: 498
  • evil/good
    • View Profile
    • My Homepage
Re: Filled Vector Scroller and starfield.
« Reply #10 on: May 27, 2007 »
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 :)
Shockwave ^ Codigos
Challenge Trophies Won:

Offline Emil_halim

  • Atari ST
  • ***
  • Posts: 248
  • Karma: 21
    • View Profile
    • OgreMagic Library
Re: Filled Vector Scroller and starfield.
« Reply #11 on: May 28, 2007 »

hay shocky , it is amazing work.  :)

Sorry only the font that i did not like it , when you scale it.

 

Offline Shockwave

  • good/evil
  • Founder Member
  • DBF Aficionado
  • ********
  • Posts: 17394
  • Karma: 498
  • evil/good
    • View Profile
    • My Homepage
Re: Filled Vector Scroller and starfield.
« Reply #12 on: May 28, 2007 »
Cheers Emil :)

Font is taken from a Melon Dezign intro btw.
Shockwave ^ Codigos
Challenge Trophies Won:

Offline ninogenio

  • Pentium
  • *****
  • Posts: 1668
  • Karma: 133
    • View Profile
Re: Filled Vector Scroller and starfield.
« Reply #13 on: May 28, 2007 »
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.
Challenge Trophies Won:

Offline Shockwave

  • good/evil
  • Founder Member
  • DBF Aficionado
  • ********
  • Posts: 17394
  • Karma: 498
  • evil/good
    • View Profile
    • My Homepage
Re: Filled Vector Scroller and starfield.
« Reply #14 on: May 28, 2007 »
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 :)
Shockwave ^ Codigos
Challenge Trophies Won:

Offline ninogenio

  • Pentium
  • *****
  • Posts: 1668
  • Karma: 133
    • View Profile
Re: Filled Vector Scroller and starfield.
« Reply #15 on: May 28, 2007 »
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.
Challenge Trophies Won:

Offline Shockwave

  • good/evil
  • Founder Member
  • DBF Aficionado
  • ********
  • Posts: 17394
  • Karma: 498
  • evil/good
    • View Profile
    • My Homepage
Re: Filled Vector Scroller and starfield.
« Reply #16 on: May 28, 2007 »
Neat :)
Shockwave ^ Codigos
Challenge Trophies Won:

Offline Clyde

  • A Little Fuzzy Wuzzy
  • DBF Aficionado
  • ******
  • Posts: 7271
  • Karma: 71
    • View Profile
Re: Filled Vector Scroller and starfield.
« Reply #17 on: August 25, 2007 »
Nice one Shockwave & Slippy.
Still Putting The IT Into Gravy
If Only I Knew Then What I Know Now.

Challenge Trophies Won: