Squares

General FreeBASIC programming questions.
Locked
dodicat
Posts: 7983
Joined: Jan 10, 2006 20:30
Location: Scotland

Re: Squares

Post by dodicat »

You can make up a quick dec.
VIZ:

Code: Select all

#define GetDec(n) valint("&b" & (n))

dim as integer n=12345
print n
dim as string bn=bin(n)
print bn
print GetDec(bn)
sleep
  
Gonzo
Posts: 722
Joined: Dec 11, 2005 22:46

Re: Squares

Post by Gonzo »

it's good now =) still quite a bit of aliasing though, and as im sure you can imagine,
you will take a huge performance hit with a big image in a small window because the bound tests aren't limiting to the bounding rect
another small nitpick is timer() is double (and will make game deltatime jumpy with lower precision float)

performance is great though, so if it were me, i'd call it a day :P
dafhi
Posts: 1641
Joined: Jun 04, 2005 9:51

Re: Squares

Post by dafhi »

The way I've done it, sample grid and thus performance is dependent upon blit rect. As for the aliasing, yes, but only if the output represents a scaled down version of the original.

And i'm only using the Timer to countdown for loop break
dodicat
Posts: 7983
Joined: Jan 10, 2006 20:30
Location: Scotland

Re: Squares

Post by dodicat »

Hi Albert.
I've made up a new BIN for strings. ---base2()
And I've included a DEC for strings.----Base10().
I've used a Fibonacci fetcher to get a reasonably big number as a quick tester.
I've included my updated PLUS(), it's needed for the Fibonacci() and the Base10().

Code: Select all

 '==================  PLUS FUNCTION ==============================
Dim Shared ADDQmod(0 To 19) As Ubyte
Dim Shared ADDbool(0 To 19) As Ubyte
For z As Integer=0 To 19
    ADDQmod(z)=(z Mod 10+48)
    ADDbool(z)=(-(10<=z))
Next z 
Function plus(_num1 As String,_num2 As String) As String
    var _flag=0,n_=0
    Dim As Ubyte addup=Any,addcarry=Any
    #macro finish()
    answer=Ltrim(answer,"0")
    If _flag=1 Then Swap _num2,_num1
    Return answer
    #endmacro
    If Len(_num2)>Len(_num1) Then 
        Swap _num2,_num1
        _flag=1
        Endif
        var diff=Len(_num1)-Len(_num2)
        var answer="0"+_num1
        addcarry=0
        For n_=Len(_num1)-1 To diff Step -1 
            addup=_num2[n_-diff]+_num1[n_]-96
            answer[n_+1]=ADDQmod(addup+addcarry)
            addcarry=ADDbool(addup+addcarry)
        Next n_ 
        If addcarry=0 Then 
            finish()
        End If
        If n_=-1 Then 
            answer[0]=addcarry+48
            finish()
            Endif
            For n_=n_ To 0 Step -1 
                addup=_num1[n_]-48
                answer[n_+1]=ADDQmod(addup+addcarry)
                addcarry=ADDbool(addup+addcarry)
            Next n_
            answer[0]=addcarry+48
            finish()
        End Function
        ' ==============================================================     
        Function Base10(BinaryNumber As String) As String
            Dim As Integer n
            Dim As String sum
            sum=Left(BinaryNumber,1)
            For n=2 To Len(BinaryNumber)
                sum=plus(plus(sum,sum),Mid(BinaryNumber,n,1)) 
            Next n
            Return sum
        End Function
        ' ===============================================================    
        Function base2(DecimalNumber As String) As String
            Dim As String starter=DecimalNumber,ans,m,b
            Dim As Ubyte main,carry,c,temp
            #macro reverse(s)
                Scope
                var lens=Len(s)
                For n As Integer=0 To Int((lens-1)/2):Swap s[n],s[lens-1-n]:Next
                End Scope
                #endmacro
                #macro div2(s,m,c)
                carry=0:ans=s
                For z As Integer=0 To Len(s)-1
                    temp=(s[z]-48+carry)
                    main=temp Shr 1
                    carry=(temp And 1) Shl 3 +(temp And 1) Shl 1
                    ans[z]=main+48
                Next z
                c= carry\10
                m= Ltrim(ans,"0")
                #endmacro
                Do
                    div2(starter,m,c)
                    b=b+Str(c)
                    starter=m
                Loop Until m="1"
                reverse(b)
                b=Str(m)+b
                Return b
            End Function
            ' ==================== Fibonacci =======================        
            Function  fibonacci(n As Integer) As String
                Dim As String sl,l,term
                sl="3": l="5"
                For x As Integer= 1 To n
                    term=plus(l,sl)
                    sl=l
                    l=term
                Next x
                Function =term
            End Function
            ' ==================================================
            
            ' ========== Example ===============================
            Dim As String f=fibonacci(21000)
            Print "start"
            Print f
            Print
            Dim As String b=base2(f)
            Print b
            Print
            Dim As String bten=base10(b)
            Print bten
            print "Done"
            Sleep
            
             
albert
Posts: 6000
Joined: Sep 28, 2006 2:41
Location: California, USA

Re: Squares

Post by albert »

@Dodicat

I was referring to the bin( num , num_of_digits )
we need a dec( num , number_of_digits )

Code: Select all

dim as ulongint number = (256^2)-1


print bin(number,16)
print bin(number,24)

print hex(number,2)
print hex(number,4)
print hex(number,6)

'theres no print dec(number,5)  which should return 65535
'we have to do it the long way
print left( str(number) + string(5,"0") , 5 )


sleep

dodicat
Posts: 7983
Joined: Jan 10, 2006 20:30
Location: Scotland

Re: Squares

Post by dodicat »

Do you mean just pre padding?
Here's a silly way:

Code: Select all

 
function dec(Number as ulongint,n as integer) as string
    #macro GetlengthNumber()
   do 
 x=x*10 
 if Number>=x then l=l+1 else exit do
loop until x>=18446744073709551615
#endmacro
    dim as integer l=1
    dim as double x=1
    GetLengthNumber()
    return string(n-l,"0") & Number
end function

print dec(12345678,22),len(dec(12345678,22))
sleep 
albert
Posts: 6000
Joined: Sep 28, 2006 2:41
Location: California, USA

Re: Squares

Post by albert »

@Dodicat

Yeah, like that,

I was going to post it to the "Got a Feature Request?" topic but forgot my sourceforge password.
albert
Posts: 6000
Joined: Sep 28, 2006 2:41
Location: California, USA

Re: Squares

Post by albert »

I think i'm gonna do an OpenGL QBASIC like "Snakey" or "Gorrillas" Game.

How would you make OpenGL water ??? chr(176)'s with dark & light blues ???
dodicat
Posts: 7983
Joined: Jan 10, 2006 20:30
Location: Scotland

Re: Squares

Post by dodicat »

Hi Albert.
Never tried Snakey or Gorilla, what are they?
I don't really play computer games, my knowledge of them is nil.
I'm fed up with these bitmaps right enough, but I've blown, stretched and anti ailised your own visage a few times as a tester.
Got you the spit of John Wayne at one point.
I had a parrot looking like an Eagle.
My picture of San Francisco I've stretched an infinite number of times, I think I would know the town now if I was parachuted into it blindfolded.


Here's a blobby watery thing (not Gl).
I've used the Catmull Rom spline thingy.
I've set the speed at 32 fps which is about Beaufort 7.

Code: Select all

Screenres 1000,500,32
color ,rgb(20,20,20)
Type Point
    As Single x,y,z,radius
    As Integer m
    As Single factor
End Type
#define vct Type<Point>
#define Intrange(f,l) int(Rnd*((l+1)-(f))+(f))
#define map(a,b,x,c,d)  ((d)-(c))*((x)-(a))/((b)-(a))+(c)

'Operators on the x,y,z of Type point
Operator + (v1 As Point,v2 As Point) As Point
Return vct(v1.x+v2.x,v1.y+v2.y,v1.z+v2.z)
End Operator
Operator -(v1 As Point,v2 As Point) As Point
Return vct(v1.x-v2.x,v1.y-v2.y,v1.z-v2.z)
End Operator
Operator * (f As Single,v1 As Point) As Point 'scalar*point
Return vct(f*v1.x,f*v1.y,f*v1.z)
End Operator
Operator * (v1 As Point,f As Single) As Point 'point*scalar
Return f*v1
End Operator
'Spline functions
Function catmull(p() As Point,t As Single) As Point
    Return 0.5 *(  	(2 * P(2)) +_
 	(-1*P(1) + P(3)) * t +_
    (2*P(1) - 5*P(2) + 4*P(3) - P(4)) * t*t +_
    (-1*P(1) + 3*P(2)- 3*P(3) + P(4)) * t*t*t)
End Function

Sub FetchCatmull(v() As Point,outarray() As Point,arraysize As Integer=1000)
    Dim As Point p(1 To 4)
    Redim outarray(0)
    Dim As Single stepsize=(Ubound(v)-1)/(arraysize)
    If stepsize>1 Then stepsize=1
    For n As Integer=2 To Ubound(v)-2
        p(1)=v(n-1):p(2)=v(n):p(3)=v(n+1):p(4)=v(n+2)
        For t As Single=0 To 1 Step stepsize
            Var temp=catmull(p(),t)
            Redim Preserve outarray(1 To Ubound(outarray)+1)
            outarray(Ubound(outarray))=temp
        Next t
    Next n
End Sub
'Framecounter and speed regulator
Function framecounter() As Integer
    Var t1=Timer,t2=t1
    Static As Double t3,frames,answer
    frames=frames+1
    If (t2-t3)>=1 Then
        t3=t2
        answer=frames
        frames=0
    End If
    Return answer
End Function
Function regulate(MyFps As Integer,Byref fps As Integer) As Integer
    fps=framecounter
    Static As Double timervalue
    Static As Double delta,lastsleeptime,sleeptime
    Var k=1/myfps
    If Abs(fps-myfps)>1 Then
        If fps<Myfps Then delta=delta-k Else delta=delta+k
    End If
    sleeptime=lastsleeptime+((1/myfps)-(Timer-timervalue))*(2000)+delta
    If sleeptime<1 Then sleeptime=1
    lastsleeptime=sleeptime
    timervalue=Timer
    Return sleeptime
End Function

Dim As Integer count,xres,yres
Screeninfo xres,yres
Redim As Point in()         'Reference array
Redim As Point catmullpts() 'Points on interpolating curve
'Set up  points for spline
Dim As Integer i
Dim As Single min=-.2*xres,max=xres+.2*xres
For z As Integer=min To max Step xres/13
    count=count+1
    Redim Preserve in(1 To Ubound(in)+1)
    Do
        i=IntRange(-1,1)
    Loop Until i<>0
    in(count)=vct(z,IntRange((yres-100),(yres-90)),0,IntRange(.001*xres,.002*xres),i,map(1,xres,z,.2,2)+IntRange(-1,1))
Next z
Dim As Point copy(1 To Ubound(in)) 'Working array
'Copy reference array to working array
For z As Integer=1 To Ubound(in):copy(z)=in(z):Next z
    
    Dim As Single dist,pi=4*Atn(1)
    Dim As Integer fps
    
    Do
        Var sleeptime=regulate(32,fps)'set at 32 frames per second
        dist=dist+.002
        If dist>=2*pi Then dist=0
        'Set new .y values for working array
        For z As Integer=1 To Ubound(copy)
    copy(z).y=in(z).y+(in(z).m*in(z).radius*Sin(in(z).factor*dist))+10*Sin(in(z).x+20*dist)
    Next z
    'Get the interpolating points by a sequence of splines
        fetchcatmull(copy(),catmullpts(),2300)
        Screenlock
        Cls
        'Get colour gradient, draw to interpolating points (4 times)
        For z As Integer=Lbound(catmullpts) To Ubound(catmullpts)-1
            Var grad=catmullpts(z+1).y-catmullpts(z).y
            Var _grad=map(-.75,.75,grad,50,240)'map to colour components 50 to 240
            Var k=map(Lbound(catmullpts),Ubound(catmullpts)-1,z,0,1.5*xres)
            Line(k,yres)-(k,catmullpts(z).y),Rgb(0,_grad/4,_grad)
            Var k0=map(Lbound(catmullpts),Ubound(catmullpts)-1,z,0,1.75*xres)
            Line(k0,yres)-(k0,catmullpts(z).y-5),Rgb(0,_grad/5,_grad)
            Var k1=map(Lbound(catmullpts),Ubound(catmullpts)-1,z,0,1.4*xres)
            Line(k1,yres)-(k1,catmullpts(z).y+30),Rgb(0,_grad/3,_grad)
            Line(catmullpts(z).x,yres)-(catmullpts(z).x,catmullpts(z).y+70),Rgb(0,_grad/2,_grad)
        Next z
        
        Draw String (10,10),"Frames/sec. = " & fps
        Screenunlock
        Sleep sleeptime,1
    Loop Until Len(Inkey)
    
    Sleep
      
albert
Posts: 6000
Joined: Sep 28, 2006 2:41
Location: California, USA

Re: Squares

Post by albert »

@Dodicat

That water looks real good.

The first QBASIC that came with DOS 5, had two sample programs called "Nibbles" and "Gorillas"
Nibbles was a snake that went around eating food and getting longer and couldn't run into a wall or itself.

==================================================================================================
How do you determine the text size of screeninfo xres , yres fullscreen , 8x8 , 8x12 , 8x14 or 8x16 ??
albert
Posts: 6000
Joined: Sep 28, 2006 2:41
Location: California, USA

Re: Squares

Post by albert »

@Dodicat

Heres a different picture of me , from a few months ago.

Code: Select all

redim shared as uinteger a(50,37)
DATA _
&HFFC5C0C4,&HFFBBB6B4,&HFFC2C0C3,&HFFDBD6DA,&HFFDBD4DC,&HFFDAD4D9,&HFFA2A6A1,&HFFBFC9C9,_
&HFFC9CFCB,&HFFCBD2D1,&HFFC1C7BE,&HFFB9BFB6,&HFF9A9C89,&HFFA2A08E,&HFFB4BB92,&HFFB9B9A6,_
&HFFB6BEC4,&HFFBDC5BF,&HFFCAC8BA,&HFF584B34,&HFF1A2019,&HFF252418,&HFF13170B,&HFF494B46,_
&HFF898A76,&HFFAAA19F,&HFFB3A99F,&HFFBED8E5,&HFFA3D8EC,&HFF2B7FA1,&HFF8FC6E1,&HFFFFFFFF,_
&HFF74705B,&HFF40351E,&HFF614C39,&HFF6E5443,&HFF6D5942,&HFF000000,&HFF948E8B,&HFF87858A,_
&HFFA6B1C3,&HFFE0DCE4,&HFFE1DBDC,&HFFDED8DD,&HFFA4A8A4,&HFFC1CBCF,&HFFCFD5D1,&HFFD3DAD8,_
&HFFCCD1D1,&HFFC9CBC9,&HFFB3BBB7,&HFF8B8C7B,&HFFB4AFA3,&HFFD4D3C0,&HFFDEE4CE,&HFFDEE9D1,_
&HFFDDDEC1,&HFFA39489,&HFF3C342D,&HFF4F4C40,&HFF595949,&HFF8B837E,&HFFA29E94,&HFFBAB5B6,_
&HFFCABEB6,&HFFBCB0A4,&HFF9F928A,&HFF6C604B,&HFF635438,&HFF8BA395,&HFF736B56,&HFF766150,_
&HFF796155,&HFF746051,&HFF6F5B50,&HFF000000,&HFFBFB9BB,&HFFBFBEBD,&HFFC9D1D6,&HFFDFDFE6,_
&HFFE4DFE2,&HFFE4DFE2,&HFFA2A89A,&HFFC6CED0,&HFFD1D7D3,&HFFD5DADA,&HFFCDD5D0,&HFFC1C5C0,_
&HFFBAC2B8,&HFF918E7D,&HFF877863,&HFF84775E,&HFF7E7866,&HFF868064,&HFF8A8270,&HFF948874,_
&HFF92856D,&HFF8B8A69,&HFF8F896E,&HFFADA69D,&HFFCBC6BF,&HFFDCDED9,&HFFE0DFD5,&HFFDED5C7,_
&HFF9E937C,&HFF6F6349,&HFF64543F,&HFFB2CACC,&HFF201C15,&HFF101014,&HFF0F1413,&HFF0B140D,_
&HFF11120F,&HFF000000,&HFF867670,&HFF797371,&HFFBDC1C6,&HFFE8E5ED,&HFFEAE3E7,&HFFE5E0E2,_
&HFFA2A7A4,&HFFCBD0D6,&HFFD4DAD7,&HFFC7CBCA,&HFFD4E0DC,&HFFC6CFD0,&HFFBDC7BE,&HFFA9A490,_
&HFF7C7761,&HFF938B6E,&HFF968D7C,&HFF999783,&HFFA39C8D,&HFFA69C8B,&HFFA5988A,&HFF9D907C,_
&HFF9D9388,&HFFB0AEA3,&HFFDBD9DB,&HFFF1F2F5,&HFFF4F1F1,&HFFEBE6DD,&HFFB3A296,&HFF777161,_
&HFF786D61,&HFFC2D4C7,&HFF19170C,&HFF393C36,&HFF36382E,&HFF30362B,&HFF2D2C21,&HFF000000,_
&HFF707571,&HFF71757C,&HFFBBC2CB,&HFFEDE6F1,&HFFEBE5E9,&HFFEBE6E8,&HFFA1A6A4,&HFFCBD5D2,_
&HFFD6DEDA,&HFFC8CDC8,&HFFDCE9EB,&HFFD3E1E3,&HFFCAD6D3,&HFFB2B5A8,&HFFADAB96,&HFFAFAD99,_
&HFFAFAE9A,&HFFB2AE9C,&HFFB8B19C,&HFFBAB3A1,&HFFB6B49F,&HFFA7A58C,&HFFBCB6A4,&HFFDAD1C7,_
&HFFF7F7FA,&HFFFFFFFF,&HFFFFFFFF,&HFFFFFDFA,&HFFF2ECE0,&HFFD0C4B3,&HFFBDB2A5,&HFFBAC4BA,_
&HFF040000,&HFF241F14,&HFF1F1906,&HFF19130D,&HFF170E03,&HFF000000,&HFFC1B5A9,&HFFB9B0B0,_
&HFFDDDBE1,&HFFF1EBEF,&HFFEDE9EA,&HFFF1E7E9,&HFFA3A8A0,&HFFD4D8D4,&HFFD6E1DC,&HFFD2D8D8,_
&HFFE4EFF0,&HFFDFF2EF,&HFFD3E1DD,&HFFBCBEB6,&HFFA6A686,&HFFACAB9A,&HFFB2B1A1,&HFFBDB9AD,_
&HFFBEBFA8,&HFFC2C1A7,&HFFC0B7A5,&HFFB1A68F,&HFFB2A092,&HFFB3A996,&HFFD7D7D3,&HFFE1DCD4,_
&HFFD8D2C5,&HFFD1C5B4,&HFFC5AF9E,&HFFC1B0A0,&HFFB7A496,&HFF99A18A,&HFF61564C,&HFF817567,_
&HFF776A5F,&HFF726258,&HFF70644F,&HFF000000,&HFF76766C,&HFF6E777B,&HFFC2C6D0,&HFFF7F0F5,_
&HFFEFEBEF,&HFFF2E8EC,&HFFA4A8AA,&HFFD7DAD8,&HFFDBE4E2,&HFFC5C8CF,&HFFEAF9FB,&HFFEBFCFC,_
&HFFE8F6F7,&HFFD1DBD3,&HFFDEE2D8,&HFFF1FAFE,&HFFF0FBF9,&HFFF3FEF5,&HFFF5FBF2,&HFFCDCAB3,_
&HFFD7D6C5,&HFFE6E4DD,&HFFE9E8D6,&HFFE2DFCB,&HFFE3DDC2,&HFFDDD3C2,&HFFDED7C0,&HFFD9D5BB,_
&HFFDAD2B9,&HFFD8D2B7,&HFFD3C0A6,&HFFBDB2A3,&HFFD2C6AC,&HFFCFB8A6,&HFFC6B4A0,&HFFBDA897,_
&HFFA09487,&HFF000000,&HFFB1B2B5,&HFFBDB9C0,&HFFDFE2E2,&HFFF9F2F9,&HFFF3EDF4,&HFFF8ECEF,_
&HFFA4A8AB,&HFFD9DEDA,&HFFD9E5DF,&HFFD5E0DC,&HFFEAF8FA,&HFFF3FFFF,&HFFF6FFFF,&HFFDDECE8,_
&HFFB2B6AA,&HFFD9DCCC,&HFFE0ECDA,&HFFE5ECDF,&HFFEAF4E6,&HFFE3E7D0,&HFFA5A289,&HFFBDB394,_
&HFFD3C6A6,&HFFDBD2B3,&HFFD5CAAF,&HFFCAC0A2,&HFFC8BC9F,&HFFC4B799,&HFFC6B38E,&HFFBEB696,_
&HFFA5A982,&HFF9AAC88,&HFF9EB694,&HFF98B68B,&HFF8CA681,&HFF789960,&HFF92B1A1,&HFF000000,_
&HFF95898D,&HFF858688,&HFFD3D3DC,&HFFFBF4FB,&HFFF6F1F5,&HFFFAEEEF,&HFFA4A7A5,&HFFD0DAD5,_
&HFFDAE2E1,&HFFC4CACC,&HFFE7FDFF,&HFFEEFFFF,&HFFF0FFFF,&HFFE4F8F6,&HFFC0CAC4,&HFF979F95,_
&HFFC3C9C2,&HFFC8D3C6,&HFFCFD5CD,&HFFD3D4C9,&HFFA39A87,&HFF655D5C,&HFF6C6F55,&HFF939687,_
&HFF96948A,&HFF979786,&HFF9A958D,&HFF9B9389,&HFF91927C,&HFF9B9D8F,&HFF414033,&HFF938D7A,_
&HFF888373,&HFF868267,&HFF7E7B5E,&HFF5C5A4B,&HFFDBE7E8,&HFF000000,&HFF828892,&HFF868A8D,_
&HFFD4D8E2,&HFFFCF5FB,&HFFF8F3F5,&HFFF8F0F1,&HFFAAA8A4,&HFFD1DCDC,&HFFDBE4E6,&HFFD2DFE0,_
&HFFF0FFFF,&HFFEFFFFE,&HFFEEFFFF,&HFFEEFFFF,&HFFDDEDED,&HFFD5EDEE,&HFFD5F0F2,&HFFDAEFF0,_
&HFFE0EFEE,&HFFDFF3F1,&HFFECFFFF,&HFFD7DAC6,&HFFAEA28F,&HFFB9B19C,&HFFB3A894,&HFFB5A88B,_
&HFFAD9B8C,&HFFAC9881,&HFFAD9580,&HFFAC947A,&HFFA3937F,&HFF8F8665,&HFF9A8374,&HFF8B7860,_
&HFF846C5A,&HFF79736C,&HFFFFFFFF,&HFF000000,&HFFD2CACA,&HFFD0CDC8,&HFFF0F0F0,&HFFFCF7FD,_
&HFFFCF1F4,&HFFFAEFF1,&HFFABA9A8,&HFFD5E1DF,&HFFDEEAEA,&HFFD4DDE3,&HFFF2FFFF,&HFFEEFFFF,_
&HFFEFFFFF,&HFFEFFFFF,&HFFEBF9F8,&HFFE0F3F7,&HFFE9FBFC,&HFFF6FFFF,&HFFF7FFFF,&HFFF2FFFF,_
&HFFEFFFFF,&HFFD5CFC0,&HFFC9B6AE,&HFFC8B9A9,&HFFC6BDB3,&HFFCDC2B2,&HFFC8C3B0,&HFFC5BAA3,_
&HFFBDAE9D,&HFFBEB09A,&HFFA4957F,&HFFA19082,&HFFAAA28D,&HFFAC9C83,&HFF9A8B6E,&HFFD3D8D9,_
&HFFFFFFFF,&HFF000000,&HFFA09BA1,&HFF9E9AA1,&HFFE2E1EE,&HFFFEF9FE,&HFFFEF3F6,&HFFFBF0F3,_
&HFFAEACAB,&HFFDAE6E1,&HFFE3EFEF,&HFFD2DBE4,&HFFF2FFFF,&HFFEFFFFF,&HFFEFFFFF,&HFFEEFEFF,_
&HFFF2FFFF,&HFFEBFAFC,&HFFEAF6F6,&HFFD6E1DB,&HFFE3EAE1,&HFFECEFDE,&HFFC2BBAB,&HFFAB8C7E,_
&HFFAB8F84,&HFFA38C82,&HFFB5A492,&HFFB19B90,&HFFA7947E,&HFFB8A593,&HFFB19988,&HFFB6A58E,_
&HFFADA18D,&HFF9A886D,&HFF9D8C72,&HFF9D8464,&HFF88776D,&HFFFFFFFF,&HFFF9F4FA,&HFF000000,_
&HFFC6C0D4,&HFFC8C1C1,&HFFEDEEF0,&HFFFEF8FE,&HFFFEF5F9,&HFFFDF3F6,&HFFAFAFAE,&HFFDCE4E5,_
&HFFDFE9E7,&HFFD9E4E5,&HFFF1FFFF,&HFFEDFFFF,&HFFEDFFFF,&HFFF7FFFF,&HFFEBF6F3,&HFFEBF3F0,_
&HFFCFCCBE,&HFFB3A18E,&HFF785A4B,&HFF623E2E,&HFF533427,&HFF56372E,&HFF4E3226,&HFF69534A,_
&HFF806D62,&HFF8F7865,&HFFB3A6A1,&HFFC4B6A9,&HFFC3B0A4,&HFFC1B3A5,&HFFB8A596,&HFFA59E88,_
&HFF9B8F89,&HFF917F77,&HFFCCD0D0,&HFFFBF7FD,&HFFCFCADA,&HFF000000,&HFFB3ACA5,&HFFB7ACAD,_
&HFFE7E8F0,&HFFFFFBFF,&HFFFFF8FD,&HFFFCF3F5,&HFFAEB2B1,&HFFE0E5EA,&HFFE1EBED,&HFFD8E1E4,_
&HFFEFF8FB,&HFFF9FFFF,&HFFFFFFFF,&HFFC0CCCE,&HFFABA9AB,&HFF968078,&HFF6D4D43,&HFF43291B,_
&HFF3A2016,&HFF2C1711,&HFF34211A,&HFF331E18,&HFF332017,&HFF43322B,&HFF61514D,&HFF55382E,_
&HFF90827B,&HFF594030,&HFFA4ADA6,&HFF86908A,&HFFE1F2F2,&HFFCBDDD7,&HFFDCF1F6,&HFFCAE3E9,_
&HFFFFFFFF,&HFFF5EAEF,&HFFD1C9D9,&HFF000000,&HFF9B9CA5,&HFFA794A5,&HFFE9E9ED,&HFFFFFCFF,_
&HFFFFFAFF,&HFFFEF6F3,&HFFB1B6B8,&HFFE3EFF0,&HFFEAF6F5,&HFFE2D7CD,&HFFC4B7B7,&HFFBFAFAA,_
&HFF6A5C61,&HFF7D6C76,&HFF63573D,&HFF30231C,&HFF2F231E,&HFF261911,&HFF2A1A14,&HFF201410,_
&HFF271610,&HFF221312,&HFF2A1811,&HFF2D1A18,&HFF403028,&HFF3A2421,&HFF483231,&HFF3E2622,_
&HFF88878D,&HFF3E281B,&HFF766C62,&HFF6F554D,&HFF91928B,&HFFFFFFFF,&HFFECE4E6,&HFFBBB5CE,_
&HFFACB2CB,&HFF000000,&HFFE5E8EA,&HFFE3E7E8,&HFFF8F9FA,&HFFFFFCFF,&HFFFEFDFF,&HFFFFF5F1,_
&HFFB9BDC2,&HFFF0F4F0,&HFFB5AB8F,&HFFB49B99,&HFF9B8679,&HFF714F49,&HFF4F3736,&HFF46312D,_
&HFF3C302A,&HFF261D14,&HFF20110F,&HFF1B140B,&HFF1D0F0A,&HFF1B0E06,&HFF1A0E06,&HFF21140B,_
&HFF221208,&HFF2C1F10,&HFF331F1A,&HFF301F1B,&HFF412D1E,&HFF311F1A,&HFF6A5A56,&HFF261509,_
&HFF27160E,&HFF3F3034,&HFF3B302D,&HFFF6E9ED,&HFFC7BFC6,&HFFCBC9DD,&HFFB8BAC7,&HFF000000,_
&HFFFBFFFF,&HFFFFFFFF,&HFFFEFFFF,&HFFFEFFFF,&HFFFFFDFF,&HFFFDF6F5,&HFFC9C6B6,&HFFA3826D,_
&HFF644539,&HFF95716C,&HFF704943,&HFF533231,&HFF3A291D,&HFF321E13,&HFF2A1C14,&HFF1F1108,_
&HFF140905,&HFF130602,&HFF120500,&HFF0F0903,&HFF130703,&HFF0A0000,&HFF050200,&HFF170509,_
&HFF26140E,&HFF3D2728,&HFF170B04,&HFF090000,&HFF170C00,&HFF1D0903,&HFF1B0A03,&HFF605347,_
&HFF0B0000,&HFF7D6A67,&HFF422929,&HFF380E18,&HFF47171A,&HFF000000,&HFFF8FEFE,&HFFFAFFFE,_
&HFFFDFFFD,&HFFFDFFFF,&HFFFFFFFF,&HFFF4E3E0,&HFFB99480,&HFF522B1E,&HFF533A34,&HFF694D4B,_
&HFF4D322C,&HFF362418,&HFF25140E,&HFF231518,&HFF332220,&HFF3C2828,&HFF3A2F29,&HFF543944,_
&HFF694E5C,&HFF7C5261,&HFF875A6A,&HFF896170,&HFF906678,&HFF8F687E,&HFF96697E,&HFF906477,_
&HFF93707F,&HFF936E7B,&HFF7A5D6A,&HFF57434A,&HFF1C1416,&HFF000000,&HFF28211F,&HFF36232A,_
&HFF54343D,&HFF623A3F,&HFF663D44,&HFF000000,&HFFF1FFFF,&HFFF2FFFF,&HFFF5FEFE,&HFFFAFFFF,_
&HFFFFFFFF,&HFFE2C5C1,&HFF6F4636,&HFF37221F,&HFF5C403E,&HFF50322A,&HFF2D1717,&HFF281914,_
&HFF3C2222,&HFF4E2D33,&HFF663D41,&HFF663B37,&HFF674251,&HFF805660,&HFF936A70,&HFF9B6D7A,_
&HFFA66F82,&HFFAA7385,&HFFA67184,&HFFA66F86,&HFFA57088,&HFFA67285,&HFFA77185,&HFFA77283,_
&HFFA77281,&HFFA66F80,&HFFAC7A91,&HFFA67891,&HFF976674,&HFF824E58,&HFF844A57,&HFF7D4B52,_
&HFF7A444E,&HFF000000,&HFFF0FFFF,&HFFF2FFFF,&HFFF7FEFF,&HFFFFFFFF,&HFFEBD9D0,&HFFE1B1A6,_
&HFF5B3021,&HFF281812,&HFF5C413D,&HFF341C0A,&HFF20110D,&HFF371D18,&HFF684248,&HFF7D494A,_
&HFF5A332A,&HFF392A2F,&HFF865F71,&HFF7A4850,&HFF8D6375,&HFF9C7282,&HFFA06C81,&HFFA36C82,_
&HFFA06781,&HFFA4667F,&HFFA86A87,&HFFAA7188,&HFFA97588,&HFFA8768B,&HFFA57284,&HFFA37381,_
&HFFA2717D,&HFFA37085,&HFFA17285,&HFF98727E,&HFF845162,&HFF834A5D,&HFF7B424C,&HFF000000,_
&HFFF5FEFF,&HFFF5FFFF,&HFFF7FFFF,&HFFFFFFFF,&HFFC59D93,&HFF996857,&HFF2A1004,&HFF301A16,_
&HFF38241B,&HFF200A05,&HFF26170D,&HFF2D1409,&HFF5F3B40,&HFF6C3B42,&HFF341C10,&HFF5C4553,_
&HFF8F5A63,&HFF4A394A,&HFF966F83,&HFF9C7281,&HFF9D7485,&HFF9D6580,&HFF9F657D,&HFFA46C83,_
&HFFAA6E84,&HFFA9728A,&HFFA8718E,&HFFA8718B,&HFF97636D,&HFF8D5B60,&HFF9A717E,&HFF9A768A,_
&HFF9B7186,&HFF906A7B,&HFF876470,&HFF855861,&HFF7F4D60,&HFF000000,&HFFF4FFFF,&HFFF6FFFF,_
&HFFFCFFFF,&HFFFFE9E8,&HFF99664F,&HFF5B2E24,&HFF433630,&HFF362117,&HFF250E08,&HFF160E06,_
&HFF291614,&HFF2B1B15,&HFF5B373F,&HFF7F4B52,&HFF331C17,&HFF765A74,&HFF673B40,&HFF19191E,_
&HFF775870,&HFF97687D,&HFF956983,&HFF906075,&HFFA1657E,&HFFA86C85,&HFFAA7587,&HFFAC7291,_
&HFF985F6E,&HFF794742,&HFF5E3932,&HFF5A3A41,&HFF724F64,&HFF8D6B81,&HFF92687D,&HFF906576,_
&HFF8B6477,&HFF7C5B68,&HFF845665,&HFF000000,&HFFF4FFFF,&HFFF6FFFF,&HFFFFFFFF,&HFFE3BBA7,_
&HFF77413E,&HFF402722,&HFF593730,&HFF29190F,&HFF190D01,&HFF25150C,&HFF221515,&HFF532D32,_
&HFF6A404A,&HFF814D56,&HFF271607,&HFF625067,&HFF644046,&HFF0F141C,&HFF604C63,&HFF8C5C6C,_
&HFF855B73,&HFF956276,&HFFA46A80,&HFFA9718C,&HFFA37896,&HFF8F5D6D,&HFF6E3A36,&HFF492419,_
&HFF534245,&HFF614A4F,&HFF816375,&HFF906974,&HFF92687D,&HFF9A6A81,&HFF966578,&HFF825D67,_
&HFF815767,&HFF000000,&HFFF4FEFF,&HFFF5FFFF,&HFFFFFFFF,&HFFD0988B,&HFF6A4B42,&HFF613C3A,_
&HFF4C2E26,&HFF1E0D01,&HFF201009,&HFF200E0D,&HFF3B211F,&HFF543031,&HFF714242,&HFF986876,_
&HFF3B1F1A,&HFF423541,&HFF735365,&HFF51485C,&HFF663E4F,&HFF755062,&HFF8F5E73,&HFFA56677,_
&HFFA56C7E,&HFFA0728E,&HFF986E8E,&HFF8D5050,&HFF4D2118,&HFF3D221A,&HFF654855,&HFF4B232C,_
&HFF8A5570,&HFF916C80,&HFF926582,&HFF926980,&HFF93657A,&HFF875C72,&HFF7B5567,&HFF000000,_
&HFFF4FEFF,&HFFFEFFFF,&HFFF5E0DD,&HFFBD8D8B,&HFF88635F,&HFF613C31,&HFF2E1408,&HFF140502,_
&HFF1D0D07,&HFF2B1C19,&HFF4B2E32,&HFF592A2E,&HFF724452,&HFFA56E8A,&HFF653E3C,&HFF3B2935,_
&HFF7B5974,&HFF6A4665,&HFF644449,&HFF764754,&HFF9A5C6D,&HFF9A5C68,&HFF965F6D,&HFFA16C78,_
&HFF8B5E6F,&HFF7A4143,&HFF372019,&HFF402824,&HFF694156,&HFF4A272B,&HFF7C495E,&HFF90657D,_
&HFF865F76,&HFF955E70,&HFF8D5B6F,&HFF7C556C,&HFF755367,&HFF000000,&HFFF4FFFF,&HFFFAFAF7,_
&HFFF9D5D6,&HFFA97366,&HFF885E55,&HFF44250E,&HFF0E0200,&HFF170908,&HFF23100A,&HFF3E2425,_
&HFF5C353B,&HFF7C4755,&HFF8F5666,&HFFA26B80,&HFF8B5B6B,&HFF58414E,&HFF7D5A71,&HFF765564,_
&HFF7A4852,&HFF925363,&HFF9A5A6B,&HFF9A5C66,&HFFA46677,&HFFA5748C,&HFF512F37,&HFF6C3F48,_
&HFF422922,&HFF482929,&HFF6B4751,&HFF4B222F,&HFF7E4659,&HFF795362,&HFF7B556B,&HFF975A77,_
&HFF8E5E7D,&HFF775B6C,&HFF725366,&HFF000000,&HFFFAFFFF,&HFFF8EDE6,&HFFC19584,&HFF936566,_
&HFF5D3022,&HFF200B04,&HFF1B0C03,&HFF1A0A05,&HFF24100C,&HFF3F211D,&HFF522C30,&HFF784650,_
&HFF8A4F55,&HFF975B73,&HFF945E6E,&HFF84556E,&HFF986F85,&HFFA07587,&HFF9F5C6E,&HFF975867,_
&HFFA05E75,&HFFA35D75,&HFFAA6480,&HFF9C729B,&HFF936985,&HFF846680,&HFF553339,&HFF4F332D,_
&HFF69475E,&HFF592E3A,&HFF81455D,&HFF6F4A5E,&HFF76506B,&HFF91637C,&HFF895F7D,&HFF79576E,_
&HFF705168,&HFF000000,&HFFFFFFFF,&HFFD5BDB5,&HFF926451,&HFF624230,&HFF180400,&HFF2B150F,_
&HFF140900,&HFF180701,&HFF1C0D03,&HFF261208,&HFF2B170E,&HFF412421,&HFF5B3235,&HFF875665,_
&HFF8E5A6A,&HFF805771,&HFF936977,&HFF936070,&HFF895354,&HFF8B4B55,&HFF8F525C,&HFF955463,_
&HFFA06478,&HFF906A82,&HFF865864,&HFF644A57,&HFF513233,&HFF52312D,&HFF674852,&HFF532B35,_
&HFF764054,&HFF77536C,&HFF785363,&HFF8B596E,&HFF815672,&HFF76536B,&HFF72526A,&HFF000000,_
&HFFFBFFFF,&HFFFCEFF3,&HFFC8A8A7,&HFF513033,&HFF392525,&HFF150700,&HFF0E0001,&HFF110302,_
&HFF180900,&HFF2A180F,&HFF40231F,&HFF3F1C1A,&HFF623E43,&HFF7B4856,&HFF875C66,&HFF715162,_
&HFF74505F,&HFF664454,&HFF603A43,&HFF6C3D3F,&HFF80414A,&HFF7C4755,&HFF8B4E5E,&HFF9B6271,_
&HFF311D24,&HFF774B56,&HFF40221C,&HFF4A2D29,&HFF624248,&HFF532C3A,&HFF673A4A,&HFF815D75,_
&HFF825D73,&HFF855262,&HFF7D5463,&HFF785668,&HFF755367,&HFF000000,&HFFFAFFFF,&HFFFEF1F5,_
&HFFEFD8DA,&HFF9E7D73,&HFF8E6458,&HFF100700,&HFF110601,&HFF0F0401,&HFF140700,&HFF1F0D08,_
&HFF4C2C2B,&HFF603639,&HFF3D1A15,&HFF8D5969,&HFF603938,&HFF3C2731,&HFF6F5267,&HFF5B4049,_
&HFF5A373D,&HFF66424B,&HFF7C4957,&HFF86505C,&HFF8A545D,&HFF825160,&HFF8B627B,&HFF864D59,_
&HFF532926,&HFF442621,&HFF54363D,&HFF50323F,&HFF674957,&HFF856077,&HFF896373,&HFF8B5A6D,_
&HFF81556A,&HFF75505E,&HFF745565,&HFF000000,&HFFFBFFFF,&HFFFBF9FA,&HFFFFFAFF,&HFFC0958D,_
&HFF8F655B,&HFF482A24,&HFF1B0A02,&HFF070000,&HFF0C0200,&HFF140500,&HFF27170D,&HFF512E2F,_
&HFF5B2C2E,&HFF694152,&HFF55312A,&HFF24191A,&HFF6E576C,&HFF403844,&HFF62465C,&HFF734653,_
&HFF855870,&HFF926373,&HFF955E69,&HFF98647D,&HFF916F8E,&HFF8E5F78,&HFF72443C,&HFF512E26,_
&HFF553530,&HFF634850,&HFF665165,&HFF825D6B,&HFF885E73,&HFF885F6E,&HFF7F585F,&HFF765866,_
&HFF754855,&HFF000000,&HFFFAFFFE,&HFFFCFFFF,&HFFFFF5F5,&HFFB08B7F,&HFFA88284,&HFF7A554D,_
&HFF361910,&HFF120401,&HFF100401,&HFF100600,&HFF1C0F04,&HFF331E19,&HFF482625,&HFF633E45,_
&HFF5E3731,&HFF1F1A20,&HFF836575,&HFF20150D,&HFF3A2B39,&HFF835564,&HFF8E607E,&HFF835B6E,_
&HFF985C72,&HFF965D78,&HFF9D6579,&HFF926C8B,&HFF8D5C71,&HFF6A4247,&HFF5C3B33,&HFF634641,_
&HFF5E4754,&HFF876980,&HFF896672,&HFF885C6B,&HFF7C5A6B,&HFF714E53,&HFF6A3D3F,&HFF000000,_
&HFFFEFFFF,&HFFFBFFFF,&HFFFAF0EE,&HFFCDABA8,&HFFB68983,&HFF5C3528,&HFF3A2215,&HFF301B0C,_
&HFF1F0B04,&HFF0E0900,&HFF180D03,&HFF20120C,&HFF3A201D,&HFF553133,&HFF5A2D2C,&HFF2E1E22,_
&HFF7D5A65,&HFF211A1B,&HFF594758,&HFF8C5C6B,&HFF956277,&HFF8C5B74,&HFF95627A,&HFF97637B,_
&HFF9A6578,&HFF9B647A,&HFF9A6582,&HFF8C5E6F,&HFF804C59,&HFF704C53,&HFF7B5763,&HFF8E6C7D,_
&HFF8C656E,&HFF8F6175,&HFF855B65,&HFF3F1F19,&HFF44313C,&HFF000000,&HFFFFFEFF,&HFFFEFFFF,_
&HFFFFFDFF,&HFFDABFC4,&HFF886764,&HFF633F35,&HFF322217,&HFF2C1810,&HFF301A14,&HFF200E07,_
&HFF180801,&HFF1C1002,&HFF311C13,&HFF402321,&HFF4A241F,&HFF22120F,&HFF634452,&HFF4C303B,_
&HFF634350,&HFF885661,&HFF926276,&HFF965F71,&HFF9B6077,&HFF975D76,&HFF966377,&HFF935F74,_
&HFF956077,&HFF93637A,&HFF936272,&HFF8F6172,&HFF8F6473,&HFF95647B,&HFFA26F81,&HFF865B5E,_
&HFF351D06,&HFF241B1D,&HFF55556E,&HFF000000,&HFFFDFFFF,&HFFFEFFFF,&HFFFEFCFB,&HFFF8EAF5,_
&HFFCBA8A6,&HFF663F35,&HFF60433A,&HFF3B1D13,&HFF241105,&HFF1F0F09,&HFF180A01,&HFF120A00,_
&HFF1D0C05,&HFF301D14,&HFF3B1C15,&HFF27110C,&HFF392124,&HFF68444D,&HFF6A4048,&HFF7B4B55,_
&HFF8F5E6A,&HFF98626B,&HFF965F75,&HFF926171,&HFF92606F,&HFF94626F,&HFF976471,&HFF966676,_
&HFF93636F,&HFF996671,&HFFA56B6B,&HFF6C4340,&HFF351915,&HFF211115,&HFF2C2825,&HFF53444E,_
&HFF797586,&HFF000000,&HFFFFFFFF,&HFFFEFFFF,&HFFFFFEFF,&HFFFFFDFF,&HFFD5C8C7,&HFFAF968B,_
&HFF88655C,&HFF553625,&HFF331A0E,&HFF221507,&HFF1E1005,&HFF120701,&HFF0F0300,&HFF190500,_
&HFF240F03,&HFF2E1A0F,&HFF29150B,&HFF422520,&HFF623B3B,&HFF794A48,&HFF845053,&HFF96585E,_
&HFF9B6066,&HFF925C62,&HFF8C5858,&HFF865158,&HFF7F4D4E,&HFF683739,&HFF562B28,&HFF3E1E19,_
&HFF0C0000,&HFF2C261A,&HFF2D1C1C,&HFF5A4C4D,&HFF665158,&HFF5C555F,&HFF8B8395,&HFF000000,_
&HFFFFFEFF,&HFFFEFEFE,&HFFFEFDFD,&HFFFFFBFF,&HFFEAE2DC,&HFFE8DDD9,&HFFB39597,&HFF896877,_
&HFF533128,&HFF3A1F15,&HFF2E1511,&HFF271307,&HFF1E0A04,&HFF1B0D04,&HFF210F08,&HFF190802,_
&HFF160500,&HFF110400,&HFF110300,&HFF220C05,&HFF341B11,&HFF341811,&HFF1B0806,&HFF0F0100,_
&HFF100100,&HFF170700,&HFF260C04,&HFF110900,&HFF171006,&HFF0F0700,&HFF201108,&HFF372729,_
&HFF685458,&HFFC2B7BE,&HFFD4CADB,&HFF7D7D8A,&HFF888AA5,&HFF000000,&HFFFEFDFD,&HFFFEFDFE,_
&HFFFEFAFE,&HFFFEF6FB,&HFFFFF6FD,&HFFEAD6DA,&HFFCBB8BF,&HFFE4C9C9,&HFFAD8D8C,&HFF58372D,_
&HFF381D11,&HFF351B14,&HFF351D10,&HFF221408,&HFF1A0B03,&HFF150600,&HFF140201,&HFF0C0302,_
&HFF0D0000,&HFF0A0000,&HFF090200,&HFF060000,&HFF0C0000,&HFF130400,&HFF180703,&HFF1C0904,_
&HFF1E1002,&HFF21110B,&HFF2B1714,&HFF261D18,&HFF271407,&HFF2E211F,&HFF978B92,&HFFF1DEE1,_
&HFFFAF1F0,&HFFE9E4E6,&HFF8F88A9,&HFF000000,&HFFFFFBFF,&HFFFEFBFF,&HFFFFF8FF,&HFFFFF6FD,_
&HFFFEF2F7,&HFFFFF2F5,&HFFF1E2E3,&HFFDEC7C3,&HFFE2C6C8,&HFF90665D,&HFF4F2F27,&HFF3A201A,_
&HFF301A10,&HFF321F14,&HFF1D0C04,&HFF1A0701,&HFF0F0200,&HFF130301,&HFF0D0400,&HFF0E0402,_
&HFF100402,&HFF130B02,&HFF1D0C01,&HFF1F0E09,&HFF200E02,&HFF1A0703,&HFF21100A,&HFF2D1C14,_
&HFF4B362A,&HFF615561,&HFF5E565F,&HFFBEB7C7,&HFFE3DADD,&HFFF0DDDF,&HFFE7D6D7,&HFFFFFFFF,_
&HFFDED1DD,&HFF000000,&HFFFFF9FF,&HFFFEF8FD,&HFFFEF4FD,&HFFFFF5FB,&HFFFEF3F7,&HFFFEF1F4,_
&HFFFCEDF0,&HFFE4D1D4,&HFFE9D3D5,&HFFBC9693,&HFF6E4A43,&HFF8D7375,&HFF584241,&HFF462D28,_
&HFF2F160F,&HFF160702,&HFF180501,&HFF1B0A02,&HFF110900,&HFF0A0000,&HFF100100,&HFF150900,_
&HFF210C01,&HFF201206,&HFF231006,&HFF1F0C07,&HFF28170D,&HFF392724,&HFF584A56,&HFFE3D1DA,_
&HFFFFF2F8,&HFFF7E6E5,&HFFF2E0E0,&HFFECDCDD,&HFFF2DCDD,&HFFB2AEAB,&HFFFFFFFF,&HFF000000,_
&HFFFEFBFC,&HFFFFF5F9,&HFFFFF3F7,&HFFFEF2F6,&HFFFCF1F2,&HFFFEEEF4,&HFFFEF0F6,&HFFFFF1F6,_
&HFFF1DCDC,&HFFDFCCCC,&HFFC6AFB4,&HFFAA9497,&HFFD0B4B2,&HFF886C6A,&HFF462718,&HFF2C1510,_
&HFF241409,&HFF301916,&HFF190D04,&HFF0B0000,&HFF120400,&HFF1C0D06,&HFF29160A,&HFF2A1409,_
&HFF271507,&HFF24160D,&HFF372525,&HFF796A6D,&HFFBDACB0,&HFFE0D1CE,&HFFEEDDE6,&HFFEFE0E0,_
&HFFEBDBDD,&HFFE7D9D8,&HFFF0DBDF,&HFF615A60,&HFFFFFFFF,&HFF000000,&HFFFFF3F7,&HFFFEF2F6,_
&HFFFCF0F4,&HFFFDF1F5,&HFFFBEFF1,&HFFFEEEF4,&HFFFDEEF4,&HFFFEEEF3,&HFFF7E9ED,&HFFF8EBEC,_
&HFFF5E5E4,&HFFEDDEDC,&HFFEBD8DE,&HFFB5988F,&HFF7D5E62,&HFF866869,&HFF3F2A26,&HFF76514E,_
&HFF2A1409,&HFF271715,&HFF29150C,&HFF33221D,&HFF4E3B36,&HFF412A36,&HFF876D7A,&HFF5C484B,_
&HFFB7A5BA,&HFFE1D6E2,&HFFF6E6F0,&HFFEEDCDC,&HFFEFDFDF,&HFFEBDBDB,&HFFE9D9DB,&HFFE5D7D6,_
&HFFE6CED0,&HFF685967,&HFFADABAE,&HFF000000,&HFFFEF2F7,&HFFFCF1F3,&HFFF9EEF3,&HFFF9EDF3,_
&HFFF8ECEF,&HFFFBEDF0,&HFFFBEEF0,&HFFFBEEF1,&HFFFAEBF1,&HFFFCEBED,&HFFF9E8EE,&HFFF7EAF0,_
&HFFEBDDE0,&HFFE3D4DB,&HFFEEDEE9,&HFFDECBC9,&HFF9C7D77,&HFF482823,&HFF3E2928,&HFF9D8E9C,_
&HFFB19FA5,&HFF948088,&HFF907C80,&HFFB0A0A4,&HFFC9B7BA,&HFFE9DDE1,&HFFF7EBEA,&HFFF3E2DF,_
&HFFF0E1DE,&HFFEEDEE2,&HFFEBDCDA,&HFFE8D9D8,&HFFE6D5D7,&HFFE2D3D5,&HFFE2CFCC,&HFF656560,_
&HFF5C525B,&HFF000000,&HFFFBF0F6,&HFFF9EFEF,&HFFF5EBF0,&HFFF6E9F1,&HFFF5E9ED,&HFFF6EBED,_
&HFFF6EBED,&HFFF7ECED,&HFFF9EAED,&HFFF7E8EB,&HFFF8E9EE,&HFFF8E9EF,&HFFF9EAEF,&HFFFCEDF2,_
&HFFF7E9EC,&HFFFBE7EC,&HFFE5D2D3,&HFFB19EA9,&HFFE9D9ED,&HFFF9EBF0,&HFFF8E9E8,&HFFFEEAEF,_
&HFFE9D8DB,&HFFECDBE3,&HFFEFE2E7,&HFFF2E2E6,&HFFEFE1E1,&HFFEFDEE5,&HFFEBDBE0,&HFFE9DADC,_
&HFFE5D6DA,&HFFE2D5D4,&HFFE2D2D3,&HFFDED0D2,&HFFE5CFD1,&HFF695B60,&HFF665C61,&HFF000000,_
&HFFF5EAF0,&HFFF5ECEC,&HFFF2E8ED,&HFFF3E6EE,&HFFF4E7EC,&HFFF5E8EE,&HFFF4E9EE,&HFFF5EAEC,_
&HFFF7E7EB,&HFFF6E6EF,&HFFF7E8EE,&HFFF7E8EC,&HFFF7E7EC,&HFFF8E9F0,&HFFF5E6EB,&HFFF7E8EC,_
&HFFF3E8EA,&HFFFBEBF0,&HFFF6ECE9,&HFFF5E7ED,&HFFF7E4E9,&HFFF1E5EA,&HFFF4E2E5,&HFFF5E0E3,_
&HFFEFE1E1,&HFFEFE1E1,&HFFECDEDD,&HFFEADADC,&HFFE8D9DB,&HFFE6D7DA,&HFFE3D5D7,&HFFE1D3D3,_
&HFFDBD0CF,&HFFD9CDD0,&HFFDFD0CE,&HFF7C6D6F,&HFF6E6763,&HFF000000,&HFFF0E4F0,&HFFEFE4EB,_
&HFFEFE4E7,&HFFEEE3E7,&HFFEEE3E7,&HFFF0E4E8,&HFFF3E5EA,&HFFF1E6EA,&HFFF1E4E8,&HFFF1E2E6,_
&HFFF0E2E8,&HFFEFE5E7,&HFFEFE3E8,&HFFF2E2E5,&HFFF3E6E8,&HFFF2E2E5,&HFFF2E3E6,&HFFF3E4E9,_
&HFFF0E1E4,&HFFEEE2E7,&HFFEFE2E5,&HFFF0E0E4,&HFFF0E0E3,&HFFEEDFE5,&HFFEEDEDD,&HFFECDCDB,_
&HFFE8DADD,&HFFE7D6DE,&HFFE3D5D6,&HFFE2D2D7,&HFFE2D2D2,&HFFE1CED4,&HFFDCCCCF,&HFFD7CACB,_
&HFFDBCECB,&HFF8E8282,&HFF756B6C,&HFF000000,&HFFEFE4E9,&HFFECE1E5,&HFFEADFE3,&HFFECE1E5,_
&HFFECE3E6,&HFFEDE1E5,&HFFF0E2E7,&HFFEEE2E7,&HFFEFE2E6,&HFFF0E0E3,&HFFEEE0E6,&HFFEDE2E4,_
&HFFEEE1E7,&HFFF2E1E4,&HFFEEE1E3,&HFFF0E0E3,&HFFF0E1E4,&HFFF0E1E6,&HFFEFDFE2,&HFFEDE1E5,_
&HFFEDDFE2,&HFFEBDEE0,&HFFE7DFE0,&HFFE8DBE0,&HFFE9D8E2,&HFFE7D6DD,&HFFE5D6D9,&HFFE2D4D7,_
&HFFE1D2D7,&HFFDCD0D6,&HFFDBD0D2,&HFFD9CDCF,&HFFD8C8CB,&HFFD3C7C7,&HFFD4C7C7,&HFFA09290,_
&HFF72696E,&HFF000000,&HFFE9E1E0,&HFFE8DEDF,&HFFE8DEDF,&HFFE7DDE0,&HFFE9DFE2,&HFFEADFE4,_
&HFFEBE0E1,&HFFEBE1E3,&HFFECE0E5,&HFFECDFE3,&HFFEBDDE3,&HFFEADFE1,&HFFEADFE1,&HFFEDDEE2,_
&HFFEBDFE1,&HFFEBDEE1,&HFFEBDEDF,&HFFEBDDE3,&HFFEADCDE,&HFFEBDFDF,&HFFE7DADD,&HFFE6DADB,_
&HFFE3D9DA,&HFFE5D6DA,&HFFE6D7D9,&HFFE4D4DA,&HFFE1D2D4,&HFFE1D3D0,&HFFDECFD0,&HFFD9CDCE,_
&HFFD8CECB,&HFFD5CBCC,&HFFD2C4C9,&HFFD0C5C6,&HFFD0C2C8,&HFFAC9CA4,&HFF685B61,&HFF000000,_
&HFFE2DDDD,&HFFE3D9DB,&HFFE4D9DC,&HFFE5DADE,&HFFE4D9DE,&HFFE7DCE2,&HFFE8DEDF,&HFFE8DFE0,_
&HFFE9DFE3,&HFFE6DBDF,&HFFE9DBDF,&HFFE6DAE1,&HFFE5D9E0,&HFFE6D9DF,&HFFE4D9DA,&HFFE5DADC,_
&HFFE5D9DC,&HFFE4D9DD,&HFFE5D9DB,&HFFE6D8D7,&HFFE2D5D7,&HFFE1D6D7,&HFFE2D4D4,&HFFE1D2D6,_
&HFFE0D2D2,&HFFDECFD4,&HFFDECFD2,&HFFDBCCD2,&HFFD9CCCC,&HFFD6CACB,&HFFD6C8CA,&HFFD1C7C7,_
&HFFCFC2C7,&HFFCCC1C4,&HFFCBC0C2,&HFFB4A8A1,&HFF5A5054,&HFF000000,&HFFDFD9DE,&HFFDED4DA,_
&HFFDED2DB,&HFFDFD4DD,&HFFE0D5D9,&HFFE1D7D8,&HFFE1D6DD,&HFFE1D7DE,&HFFE2D7DA,&HFFE1D6DA,_
&HFFE1D3D8,&HFFE0D4D7,&HFFDFD3D6,&HFFE0D3D8,&HFFDFD4D5,&HFFDFD3D8,&HFFDFD2DB,&HFFDED3D6,_
&HFFDFD2DA,&HFFDFD1D4,&HFFDDD0D0,&HFFDCD1D3,&HFFDDCFCF,&HFFDCCED0,&HFFDBCCCE,&HFFDACBCF,_
&HFFD8C9CE,&HFFD4C5CD,&HFFD0C7C6,&HFFD0C6C6,&HFFD0C1C4,&HFFCCC2C3,&HFFCBC0BD,&HFFC8BCBF,_
&HFFC2BFBD,&HFFC1B4B3,&HFF5A5A58,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,_
&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,_
&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,_
&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,_
&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,_
&HFF000000,&HFF000000 
screen 20,32
dim as double magnification
magnification=  0.1
Type bitmap_size
As Integer across,down
End Type
sub read_data(mybitmap as bitmap_size)
for x as integer=0 to mybitmap.across
for y as integer=0 to mybitmap.down
read a(x,y)
next y
next x
end sub
dim shared as any pointer image
image=imagecreate(magnification*ubound(a,1),magnification*ubound(a,2))
Sub drawbitmap_to_image(mybitmap As bitmap_size,scale as single=1,mx As Integer=0,my As Integer=0)
#macro magnify(pivotx,pivoty,px,py,scale)
var rotx=scale*(px-pivotx)+pivotx
var roty=scale*(py-pivoty)+pivoty
#endmacro
For x As Integer=mx To mx+mybitmap.across
For y As Integer=my To my+mybitmap.down
magnify(mx,my,x,y,scale)
line image,(rotx-scale/2,roty-scale/2)-(rotx+scale/2,roty+scale/2),a(x-mx,y-my),BF
Next y
Next x
End Sub
Dim As bitmap_size bitmap_info
bitmap_info.across=ubound(a)
bitmap_info.down=ubound(a,2)
read_data(bitmap_info)
drawbitmap_to_image(bitmap_info,magnification)
'BITMAP image is now in image
'This just displays the image
dim as string i
Do
i=inkey
Screenlock
Cls
locate 2,2
print "magnification ="; 0.1
put( 0, 0),image,pset
Screenunlock
Sleep 1,1
Loop Until i=Chr(27)
imagedestroy image

MichaelW
Posts: 3500
Joined: May 16, 2006 22:34
Location: USA

Re: Squares

Post by MichaelW »

FWIW, for the DOS 5 Beta the names were NIBBLES.BAS and CATAPULT.BAS. For the DOS 5 release the CATAPULT.BAS source was altered somewhat and the name changed to GORILLA.BAS.
dodicat
Posts: 7983
Joined: Jan 10, 2006 20:30
Location: Scotland

Re: Squares

Post by dodicat »

Thanks Albert.

I'll anti aliase it at magnification 10 and keep it for future use.

Here's a text size finder:

Code: Select all


screen 9

sub gettextsize(byref x as integer,byref y as integer)
dim as integer xres,yres
screeninfo xres,yres
 dim as integer _x=loword(width)
 dim as integer _y=hiword(width)
 x= xres\_x:y=yres\_y
end sub


dim as integer w,h
gettextsize(w,h)
print w & " X " & h
sleep
 
albert
Posts: 6000
Joined: Sep 28, 2006 2:41
Location: California, USA

Re: Squares

Post by albert »

@Dodicat

Your water needs a "Tall Ship" sailing along on it. Under the sun or stars. Maybe a war ship with cannons firing.

Code: Select all


sub gettextsize(byref x as integer,byref y as integer)
    dim as integer xres,yres

    screeninfo xres,yres

    dim as integer _x=loword(width)
    dim as integer _y=hiword(width)
    
    x= xres\_x:y=yres\_y

end sub

dim as integer xres,yres
screeninfo xres,yres
screenres xres,yres,32,0,1

dim as integer w,h
gettextsize(w,h)

locate 0,0:print w & " X " & h

sleep
END

I get 8x8 , but i'm on a 1366x768 HD laptop..
dodicat
Posts: 7983
Joined: Jan 10, 2006 20:30
Location: Scotland

Re: Squares

Post by dodicat »

Yea, ok Albert, a nice project, I'll have a think about it.
By the way there is a submarine at 50 fathoms, and some fish.
I've downloaded Gorilla.bas and nibbles.bas, Freebasic won't run them with #lang "qb", so much for compatibility.
I have Quickbasic here, I'll try them on that.
Locked